第一篇: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 代码的关键!

相关推荐
程序人生8882 分钟前
从“把隐私文件上传到别人云端“到本地可控:DocConverter Web 立项初心与架构选型
前端·图像处理·人工智能·opencv·架构·ocr·文心一言
海宇数据12 分钟前
零信任架构实战:基于海宇车辆vin码查车辆信息详版构建自动化车险承保定级网关
人工智能·架构·自动化·php
ly768923 分钟前
从 TF-IDF 到 BM25:Elasticsearch 相关性评分的字段长度归一化与 boost 调参边界
java·elasticsearch·query dsl·bm25·相关性评分
Thomas.Sir27 分钟前
第19课:Gateway过滤器、全局拦截、请求响应统一处理
spring cloud·gateway
俊哥大数据29 分钟前
Flink 2.3.0 从理论到实践 —— 第 2 章 Flink 运行时架构
网络·架构·flink
SL-staff32 分钟前
技术实践:将Excel自动升级为可搜索的知识节点(JVS平台实现)
mongodb·elasticsearch·知识图谱·jvs平台·语义解析·企业文档管理·excel结构化
Elasticsearch36 分钟前
2026 年唯一获得端点预防与响应(EPR)满分的厂商是 Elastic
elasticsearch
HZZD_HZZD37 分钟前
厂区三级计量怎么选表?互感器倍率与需量管理
大数据·物联网·腾讯云
计算机毕业编程指导师42 分钟前
大数据毕设选题推荐:基于Hadoop+Spark全球碳排放减排策略分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·计算机·spark·毕业设计·碳排放减排
JAVA面经实录9171 小时前
Java高级后端 · 架构组件开发 + CodeReview(本岗位差异化核心)
java·架构·代码复审