第一篇:Elasticsearch 入门踩坑记:从 “URL 拼写错误” 到跑通第一个搜索服务

引言

当我信心满满地在浏览器输入 http://192.168.61.135:9200/,准备验收刚装完的 Elasticsearch 时,屏幕上赫然跳出一行字:"URL 拼写可能存在错误,请检查"

我当场愣住 ------ 地址明明是从配置文件里原封不动复制的,怎么会错?接下来的半小时,我经历了从怀疑人生到逐个排查,终于把这个 "傲娇" 的全文检索服务器跑通了。今天就把这份踩坑实录分享给大家,保证新手看完能少走 90% 的弯路!

一、为什么 MySQL 不够用,非要学 ES?

很多同学一开始都会有这个疑问:我用 MySQL 的like '%关键词%'不也能做搜索吗?

举个最简单的例子:假设你有一个课程表,里面有课程名课程描述讲师三个字段,用户输入 "Python" 要搜索所有相关课程。用 MySQL 的话,你得写:

复制代码

这行 SQL 看似简单,但背后是三次全表扫描!如果你的数据量有几十万、几百万条,查询速度会慢到让用户直接关掉页面。

而 Elasticsearch(简称 ES)就是为解决这个问题而生的 ------ 它天生擅长全文检索,能在毫秒级返回海量数据的搜索结果,这也是现在电商、资讯、社交平台都用它做搜索的核心原因。

二、ES 安装全流程:避坑指南(亲测有效)

我用的是 ES 6.2.3 版本(和 Spring Boot 兼容性最好),安装在 CentOS 虚拟机上,全程踩过的坑都给你们标出来了!

1. 前置准备:别省内存!

第一个大坑:虚拟机内存必须大于 1.5G!我一开始只给了 1G,ES 启动到一半直接闪退,连报错日志都没来得及写。建议直接给 2G,一步到位。

2. 必须用非 root 用户启动

ES 出于安全考虑,禁止 root 用户直接启动,这也是新手最容易踩的坑。我们需要创建专门的用户并分配权限:

复制代码

3. 解压安装包

切换到 admin 用户,把下载好的elasticsearch-6.2.3.tar.gz上传到/usr/upload,然后解压:

复制代码

4. 修改核心配置文件

这是最关键的一步,我之前的 "URL 拼写错误" 就是因为这里配置错了! 编辑/usr/local/elasticsearch-6.2.3/config/elasticsearch.yml

复制代码

5. 系统参数优化(不做必报错)

ES 对系统的文件句柄数和虚拟内存有要求,默认值不够,需要修改:

复制代码

6. 启动 ES 并验证

终于到启动环节了!切换回 admin 用户:

复制代码

等待 10 秒左右,在浏览器输入 http://你的虚拟机IP:9200,如果看到下面的 JSON,就说明安装成功了!

复制代码

如果还是提示 "URL 拼写错误",按这个顺序排查:

  1. ES 是否真的启动了:ps -ef | grep elasticsearch

  2. 虚拟机防火墙是否关闭:systemctl stop firewalld

  3. network.host是否设为0.0.0.0

  4. 虚拟机 IP 是否和配置的一致

三、第一个 ES 操作:索引和文档的 CRUD

ES 的核心概念其实很好理解:

  • 索引(Index):相当于 MySQL 的数据库

  • 类型(Type):相当于 MySQL 的表(ES 7.0 后已废弃,这里 6.2.3 还能用)

  • 文档(Document):相当于 MySQL 的一行数据

我们用 Postman 来做几个简单的操作,感受一下 ES 的魅力。

1. 创建索引

发送 PUT 请求到 http://192.168.61.135:9200/java06,请求体:

复制代码

✅ 注意:主分片数量一旦创建就不能修改!因为 ES 是通过hash(文档ID) % 主分片数来决定文档存在哪个分片上的,改了主分片数,之前的数据就找不到了。

2. 新增文档

发送 POST 请求到 http://192.168.61.135:9200/java06/course/1,请求体:

复制代码

3. 查询文档

发送 GET 请求到 http://192.168.61.135:9200/java06/course/1,就能看到我们刚插入的数据了。

4. 修改和删除文档

  • 修改:发送 PUT 请求到同一个地址,覆盖原来的内容即可

  • 删除:发送 DELETE 请求到 http://192.168.61.135:9200/java06/course/1

四、总结与下节预告

今天我们从一个报错开始,搞定了 ES 的安装和基础 CRUD。其实 ES 的强大远不止于此,它之所以搜索这么快,核心在于倒排索引

下一篇我会用最通俗的方式讲清楚倒排索引的原理,还有中文分词神器 IK 的使用,以及字段类型的最佳实践 ------ 这些都是面试必问的考点,也是写好 ES 代码的关键!

相关推荐
Unbelievabletobe2 小时前
解决了股票api接口盘后数据更新慢的问题
大数据·开发语言·python
Promise微笑4 小时前
2026年中国驱鸟器市场格局与主流品牌技术
大数据·人工智能
qq_382949225 小时前
推荐:《Spring Cloud Alibaba 微服务架构实战课》—— 从零到一构建企业级微服务系统
微服务·云原生·架构
幽络源小助理6 小时前
最新知识付费系统网站源码 PC+H5双端 附安装教程 – 幽络源源码网
大数据·数据库
luweis6 小时前
企智孪生 ETA(3.3 认知算法层:ETA 的思维内核 3.4 基础架构:算力与弹性)【浙江联保网络 卢伟舜】
大数据·运维·线性代数·ai·矩阵·学习方法
JAVA社区7 小时前
Java高级全套教程(十一)—— Kubernetes 超详细企业级实战详解
java·运维·微服务·容器·面试·kubernetes
暴躁小师兄数据学院8 小时前
【AI大数据工程师特训笔记】第14讲:Linux操作系统与shell脚本
大数据·人工智能·笔记
2601_959986249 小时前
M4Markets:把工具可用性做到位——逻辑梳理与提示整理
大数据·人工智能