Elasticsearch全文检索服务器

Elasticsearch:原理、安装与基本使用

一、为什么要用 Elasticsearch?

在传统 MySQL 中:

  • `LIKE '%xxx%'` 无法走索引

  • 多字段模糊搜索需要多次全表扫描

  • 数据量一大,性能直线下降

**Elasticsearch(ES)优势:**

  • 基于 **倒排索引**

  • 支持 **全文检索**

  • 分布式、高并发、近实时搜索


二、Elasticsearch 是什么?

Elasticsearch 是一个 **基于 Lucene 的分布式全文检索引擎**。

✅ 对外提供 RESTful API

✅ 数据格式为 JSON

✅ 常用于:搜索、日志分析、大数据分析


三、倒排索引原理(重点)

1、 正排索引 vs 倒排索引

| 类型 | 映射关系 | 类比 |

|----|----|----|

| 正排索引 | 文档 → 关键词 | 翻书找内容 |

| 倒排索引 | 关键词 → 文档 | 查字典目录 |

2、 倒排索引结构

Term(分词)

├── Doc1

├── Doc2

└── Doc3

3、 分词规则

  • ✅ 不重复

  • ✅ 停用词不参与(的、地、得)

  • ✅ 不需要搜索的字段不参与(如图片路径)

**搜索是从 Term 列表匹配,而不是全文扫描**

四、Elasticsearch 安装(Linux)

1、 环境准备

  • 虚拟机内存 ≥ **1.5G**

  • 禁止使用 root 启动 ES

2、 创建用户

bash

groupadd es

useradd admin

usermod -G es admin

chown -R admin:es /usr/local/elasticsearch*

3、 核心配置

`elasticsearch.yml`

cluster.name: power_shop

node.name: power_shop_node_1

network.host: 0.0.0.0

http.port: 9200

transport.tcp.port: 9300

discovery.zen.ping.unicast.hosts: "192.168.79.135:9300"

path.data: data

path.logs: logs

http.cors.enabled: true

五、系统参数调优(必做)

limits.conf

soft nofile 65536

hard nofile 65536

sysctl.conf

conf

vm.max_map_count=655360

sysctl -p

六、ES 基本操作(RESTful)

1、 Index 管理

创建索引

json

PUT /java06

{

"settings": {

"number_of_shards": 2,

"number_of_replicas": 0

}

}

**单节点环境 replicas 必须为 0**

修改副本数

json

PUT /java06/_settings

{

"number_of_replicas": 1

}

2、 Type & Mapping

json

POST /java06/_mapping/course

{

"properties": {

"name": { "type": "text" }

}

}

3、 Document CRUD

json

POST /java06/course/1

{

"name": "Python从入门到放弃"

}

http

GET /java06/course/1

DELETE /java06/course/1

七、IK 分词器

1、安装

解压 IK 到:

/usr/local/elasticsearch-6.2.3/plugins/ik

2、自定义词典

  • `main.dic`:扩展词(奥里给)

  • `stopword.dic`:停用词(的、地、得)

**必须 UTF-8 编码**

3、分词模式

| 模式 | 场景 |

|----|----|

| ik_smart | 搜索 |

| ik_max_word | 索引写入 |

八、总结

✅ ES 核心是倒排索引

✅ Linux 安装必须调系统参数

✅ 单节点 replicas = 0

✅ IK 分词器是中文搜索必备

相关推荐
昌原的儿子LEO3 小时前
进程和线程(2)
linux·服务器·网络
小王C语言4 小时前
云服务器重置后,vscode无法远程连接
运维·服务器
RoboWizard4 小时前
金士顿高性能存储 赋能工控行业多场景深度落地
运维·服务器
会飞的土拨鼠呀4 小时前
Linux 真实内存使用率的核心计算标准
linux·运维·服务器
智购科技自动售货机工厂4 小时前
2026自动售货机语音支付模块集成:从声纹识别到支付闭环的工程实践~YH
大数据·服务器·网络·数据库·人工智能
当代红领巾5 小时前
VMware 里装好 Linux 系统没有 ipv4 地址?
linux·运维·服务器
Elasticsearch6 小时前
从告警到根因仅需 3 分钟:使用 Elastic Agent Builder 实现自动化根因分析
elasticsearch
xiaoxiang96096 小时前
Git 分支同步实战:`merge -X theirs` 与完全合并方案
数据库·git·elasticsearch
qq_401700416 小时前
TCP 粘包问题深度解析:嵌入式网络开发的常见坑与解决方案
服务器·网络·qt·网络协议·tcp/ip
DigitalOcean6 小时前
面向 AI 工作负载,单核性能提升 30%:DigitalOcean v5 Droplets 云服务器正式上线
服务器