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

相关推荐
Elasticsearch4 小时前
Elasticsearch:为自行管理的 Elastic Stack 自定义 TLS 证书
elasticsearch
对象存储与RustFS7 小时前
网盘限速逼你开会员?用 RustFS 自己搭一个不限速的“私人网盘
服务器·后端·docker
..Dauntless..9 小时前
【Linux】一切皆文件和缓冲区
linux·运维·服务器
裕晟资质规划9 小时前
三类资质变更报告时限差在哪?军工 15 日、集成印制 10 日
大数据·服务器·网络
Elasticsearch9 小时前
斯坦福《2026 年 AI 指数报告》与金融服务业的安全现实
elasticsearch
QMCY_jason9 小时前
x86 ubuntu2204 无gui 安装 openeuler 2203 aarch64版本
linux·运维·服务器
重生之小比特9 小时前
【Linux系统】12 进程程序替换 自定义Shell 命令行解释器
linux·运维·服务器
轻舟技术A9 小时前
Provider 不属于 Agent 核心:rpi 的分层理由与收益
服务器·网络
连山齐名9 小时前
ai应用开发的学习笔记
服务器·笔记·学习
Shadow(⊙o⊙)9 小时前
仿muduo实现高并发服务器——事件就绪管理Channel.hpp
服务器·c++