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 分词器是中文搜索必备

相关推荐
IT小盘2 小时前
17-构建Prompt测试集-提示词优化不再凭感觉
服务器·windows·prompt
2401_858286113 小时前
OS81.【Linux】基于环形队列的多生产者-多消费者模型
linux·运维·服务器·环形队列
U-Mail邮件系统3 小时前
企业邮箱搭建用自建还是租用?合规、成本与安全性对比解析
服务器·网络·企业邮箱系统
llilian_163 小时前
基于PCI总线校时时钟同步卡的高精准授时解决方案
大数据·服务器·功能测试·单片机
米修米修ne3 小时前
Home Assistant连接米家MIoT和苹果HomeKit折腾笔记
服务器·智能家居
笑一下蒜了.3 小时前
DNS 原理与 BIND 权威服务器实操笔记
运维·服务器·笔记
行者-全栈开发4 小时前
【Linux内核】CVE-2026-46242:Bad Epoll Linux 内核 epoll UAF 漏洞修复指南(99%可靠root的云安全噩梦)
linux·运维·服务器·cve-2026-46242·linux内核漏洞·use-after-free·云多租户安全
平安的平安4 小时前
人在外地,怎样访问办公室里的电脑和内部资源?
运维·服务器·电脑
智体工坊4 小时前
从零搭建 AI 模型中转网关:部署、渠道、定价、装修全记录
运维·服务器·人工智能·搜索引擎·自动化
我命由我123454 小时前
Kotlin 面向对象 - Kotlin 类变量与类方法
java·服务器·后端·java-ee·kotlin·android jetpack·android runtime