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

相关推荐
山人在山上1 小时前
arcgis server 暴力迁移
运维·服务器·arcgis
weixin_704266051 小时前
MySQL到ES
数据库·mysql·elasticsearch
久绊A1 小时前
Copy Fail Linux内核提权漏洞(CVE-2026-31431)
linux·运维·服务器
源远流长jerry1 小时前
TCP 连接队列解析:从 listen () 到 connect ()
linux·服务器·网络·网络协议·tcp/ip
Bert.Cai1 小时前
Linux bc命令详解
linux·运维·服务器
rjszcb1 小时前
Linux.之系统性能监控脚本, CPU、内存、DDR、CMA、ISP、MPP、ION、DRM、进程
linux·服务器
桌面运维家1 小时前
Linux磁盘IO调度器配置技巧 提升系统读写性能
linux·运维·服务器
xcjbqd01 小时前
SAP硬件选择详解:服务器、存储与网络的全面解析
运维·服务器·网络
Lehjy1 小时前
【Linux】进程地址空间与写时拷贝
linux·运维·服务器