elasticsearch
0. 简介
https://www.elastic.co/cn/what-is/elasticsearch
全文搜索属于最常见的需求,开源的 Elasticsearch 是目前全文搜索引擎的首选。它可以快速地储存、搜索和分析海量数据。维基百科、Stack Overflow、Github 都采用它。
Elastic 的底层是开源库 Lucene。但是,你没法直接用 Lucene,必须自己写代码去调用它的接口。Elastic 是 Lucene 的封装,提供了 REST API 的操作接口,开箱即用。REST API:天然的跨平台。
1. 基本概念
- index(索引)相当于MySQL中的Database
- Type(类型)相当于MySQL中的表
- Document(文档) 相当于表中的内容
2. 倒排索引机制
Elasticsearch 使用倒排索引(Inverted Index)机制来支持快速的全文搜索和高效的搜索引擎功能。倒排索引是一种数据结构,它将文档中的每个单词映射到包含该单词的文档列表,以及该单词在每个文档中的位置信息。
以下是倒排索引的工作原理:
-
分词:在建立倒排索引之前,文本被分割成单词或术语,这个过程称为分词。分词可以根据特定的分析器和标记化规则进行,以确保准确的单词提取。
-
构建索引:对于每个文档,将分词后的单词与文档的唯一标识符关联起来,并记录每个单词在文档中的位置信息。这个过程称为构建索引或创建倒排索引。
-
倒排索引表:倒排索引表是一个映射结构,它将每个单词映射到包含该单词的文档列表。对于每个单词,可以获取相关的文档列表。
-
搜索:当执行搜索查询时,Elasticsearch 将查询词(或短语)进行分词,然后在倒排索引表中查找匹配的单词,并获取相关的文档列表。使用倒排索引,可以快速确定哪些文档包含查询词,并按相关性排序结果。
倒排索引在搜索引擎中的好处是,它可以在很短的时间内定位包含特定词语的文档,从而实现高效的全文搜索。此外,倒排索引还支持其他功能,如词项权重计算、短语匹配、聚合和过滤等。
Elasticsearch 使用倒排索引作为其核心索引机制,并通过高度优化和分布式处理来提供快速和可伸缩的搜索功能。
3. 安装
3.1 下载镜像
docker pull elasticsearch:7.4.2 存储和检索数据
docker pull kibana:7.4.2 可视化检索数据
3.2 运行容器
3.2.1 elasticsearch
cd /usr/local/docker
mkdir elasticsearch
mkdir config
mkdir data
cd config
echo "http.host: 0.0.0.0" >> elasticsearch.yml
chmod -R 777 elasticsearch
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx512m" \
-v /usr/local/docker/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /usr/local/docker/elasticsearch/data:/usr/share/elasticsearch/data \
-v /usr/local/docker/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.4.2
注意 http.host中间的冒号需要加上空格 文件夹需要设置权限
3.2.2 kibana
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://localhost:9200 -p 5601:5601 \
-d kibana:7.4.2
http://localhost:9200 一定改为自己虚拟机的地址
4. 初步探索
4.1 _cat
GET /_cat/nodes:查看所有节点
GET /_cat/health:查看 es 健康状况
GET /_cat/master:查看主节点
GET /_cat/indices:查看所有索引 show databases;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY