Elasticsearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene基础之上。
目录导航
一、What
1、它是什么
Elasticsearch 是一个开源的分布式全分搜索引擎,建立在一个全文搜索引擎库 Apache Lucene™ 基础之上,基于Java开发。
2、Elasticsearch当前主流使用的版本和历史版本
2023年7月25日,Elastic 8.9 版正式发布。
当前主流使用的版本为7.x.x,于2019年4月11日发布的7.0.0稳定版本,基于 Lucene 8.0.0。
另外,ES是从版本2直接跳到5的,主要是为了和Elastic Stack其他组件保持版本一致。
6.0版本,移除了type,开始不支持一个 index 里面存在多个 type 了,所有的新的 index 都将只有一个虚拟的固定的 type: doc 来代替。
7.0版本,ES 数据库的存储结构变化:去除了Type,包括API层面。默认配置变化:默认节点名称为主机名,默认分片数为1,不再是5。
彻底废除 _all 字段的支持,为提升性能默认不在支持全文检索。ES程序包默认打包jdk:以至于7.x版本的程序包大小突然边300MB+
二、Why
1、它的特点
一个分布式的实时文档存储,每个字段 可以被索引与搜索
一个分布式实时分析搜索引擎
能胜任上百个服务节点的扩展,并支持PB级别的结构化或者非结构化数据
三、How
1、它的工作原理
1.1、理解Elasticsearch中的基本概念
- Index索引:
- Type类型:Elasticsearch
- Document文档:
- Field字段:
- Shard分片:
- Replica副本:
1.2、了解Elasticsearch中的分词器
1.3、了解倒排索引的实现
1.4、了解Elasticsearch执行搜索的两个阶段
- Query阶段:分词、倒排索引
- Fetch阶段:根据倒排索引中的文档id获取文档内容,返回客户端
2、安装及简单使用
2.1、下载安装包
本文下载7.0.0版本。
2.2、了解目录结构
安装包为elasticsearch-7.0.0-windows-x86_64.zip, 解压到想放到的目录,目录结构如下:
各目录的介绍如下:
- bin: 启动文件目录
- config: 配置文件目录
- jdk: 默认打包的jdk
- lib:依赖的jar包
- modules: 功能模块目录
- plugins: 插件目录(可以放置分词器等)
2.3、启动
启动前确保java环境已配置好,本文使用的是jdk 1.8.0_121版本
C:\Users\Administrator>java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
找打bin目录下的elasticsearch.bat,双击运行。启动成功如下图:
访问http://127.0.0.1:9200,成功后返回如下内容:
{
"name" : "BREAKER-93",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "QLWHflKEQuu50qzzcH3CUA",
"version" : {
"number" : "7.0.0",
"build_flavor" : "default",
"build_type" : "zip",
"build_hash" : "b7e28a7",
"build_date" : "2019-04-05T22:55:32.697037Z",
"build_snapshot" : false,
"lucene_version" : "8.0.0",
"minimum_wire_compatibility_version" : "6.7.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
3、源码解读
待后续补充
4、常用场景及常见问题
待后续补充
参考链接:
- 【官方文档】:https://www.elastic.co/guide/en/enterprise-search/current/start.html
- 【官方书籍:Elasticsearch 权威指南】:https://www.elastic.co/guide/cn/elasticsearch/guide/current/_who_should_read_this_book.html
- https://mikechen.cc/25548.html
- https://blog.csdn.net/u010882234/article/details/125529329
- https://blog.csdn.net/weixin_47314924/article/details/128985330