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

相关推荐
quan_泉20 分钟前
DIDCTF 取证初学者
java·服务器·前端
RisunJan28 分钟前
Linux命令-nohup(使进程忽略挂起(HUP)信号并在后台继续运行)
linux·运维·服务器
爱喝水的鱼丶30 分钟前
SAP-ABAP:SAP 简单报表输出开发系列(共6篇)第三篇:SAP ALV 报表样式定制:字段布局与交互功能配置
服务器·开发语言·学习·交互·sap·abap
追巨36 分钟前
单节点elasticsearch安装笔记
大数据·elasticsearch·jenkins
鱼锦0.043 分钟前
Coreseek和Elasticsearch 有什么区别
大数据·elasticsearch·jenkins
一叶星殇1 小时前
日志成海,何以检索:Serilog 解锁 .NET 日志可查询新范式
运维·服务器
不做无法实现的梦~1 小时前
Git Clone 使用 Watt/Steam++ 加速时报证书错误的原因与解决方法
大数据·git·elasticsearch
上海云盾安全满满1 小时前
服务器不稳定,丢包有哪些原因?
运维·服务器
li星野1 小时前
FastAPI 参数详解:路径参数、查询参数与请求体 —— 从入门到实战
服务器·学习·fastapi
陳10301 小时前
Linux:信号
linux·运维·服务器