Elasticsearch:一个基于Lucene的开源分布式搜索引擎,用于快速处理和检索大规模数据
Lucene:Apache的开源搜索引擎类库,提供搜索引擎核心API
应用场景:日志分析,监控,全文搜索
Logstash:数据收集,转换,转发工具
Kibana:数据可视化和仪表板工具
Beats:轻量级的数据传输工具
ELK:Elastic Stack,以elasticsearch为核心的技术栈,包括Elasticsearch,Logstash,Kibana,Beats
正向索引(Forward Index):遍历每个文档,判断文档内容是否包含词条
倒排索引(Invert Index):基于词条创建索引,查询时先根据词条找到文档id,再根据文档id找到文档
数据格式
文档
索引(index)
mapping
概念对比
架构
索引
创建索引
PUT /索引名称
{
"mappings": {
"properties": {
"title": {
"type": "text",
"analyzer": "ik_smart"
},
"email": {
"type": "keyword",
"index": false
},
"name": {
"type": "object",
"properties": {
"firstName": {
"type": "keyword"
},
"lastName": {
"type": "keyword"
}
}
}
}
}
}
查询索引
GET /索引名称
删除索引
DELETE /索引名称
判断索引是否存在
HEAD /索引名称
添加字段
PUT /索引名称/_mapping
{
"properties": {
"字段名": {
"type": "integer"
}
}
}
文档
添加文档
POST /索引名称/_doc/文档id
{
"字段1": "值1",
"字段2": "值2",
"字段3": {
"子属性1": "值3",
"子属性2": "值4"
}
}
查询所有文档
GET /索引名称/_search
{
"query": {
"match_all": {}
}
}
查询文档
GET /索引名称/_doc/文档id
删除文档
DELETE /索引名称/_doc/文档id
修改文档
全量修改
PUT /索引名称/_doc/文档id
{
"字段1": "值1",
"字段2": "值2",
"字段3": {
"子属性1": "值3",
"子属性2": "值4"
}
}
增量修改
POST /索引名称/_update/文档id
{
"doc": {
"字段名1": "值1",
"字段名2": "值2"
}
}
DSL(Domain Specific Language)查询语法
DSL Query的分类
基本语法
全文检索查询
精确查询
地理查询
复合查询
相关性算分
Function Score Query
Boolean Query
搜索结果处理
排序
分页
高亮
数据聚合
聚合的分类
自动补全
自定义分词器
安装与使用
安装es
下载地址:https://www.elastic.co/cn/downloads/elasticsearch
设置环境变量
SERVICE_ID:服务的内部标识符
SERVICE_DISPLAY_NAME:服务在服务管理器中显示的名称
安装为windows服务
elasticsearch-service.bat install
通过服务管理器来管理Elasticsearch
elasticsearch-service.bat manager
配置config\elasticsearch.yml,启用安全功能
xpack.security.enabled: true
设置密码,切换到bin目录,打开cmd窗口,用户名为elastic
elasticsearch-setup-passwords interactive
安装Kibana
下载地址:https://www.elastic.co/cn/downloads/kibana
配置config/kibana.yml,密码需要跟elasticsearch中设置的保持一致
elasticsearch.hosts: ["http://localhost:9200"]
elasticsearch.username: "kibana_system"
elasticsearch.password: "123456"
安装为Windows服务
nssm install Kibana D:\tools\kibana-7.17.6\bin\kibana.bat
访问Kibana:http://localhost:5601
使用Kibana
安装IK分词器
下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases
解压后将文件夹重命名为ik,移动到elasticsearch的plugins目录中,重启elasticsearch
模式
ik_smart:智能切分,粗粒度
ik_max_word:最细切分,细粒度
配置config\IKAnalyzer.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IK Analyzer 扩展配置</comment>
<!--用户可以在这里配置自己的扩展字典 -->
<entry key="ext_dict">ext.dic</entry>
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords">stopword.dic</entry>
<!--用户可以在这里配置远程扩展字典 -->
<!-- <entry key="remote_ext_dict">words_location</entry> -->
<!--用户可以在这里配置远程扩展停止词字典-->
<!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>
安装拼音分词器
下载地址:https://github.com/medcl/elasticsearch-analysis-pinyin/releases
解压后将文件夹重命名为pinyin,移动到elasticsearch的plugins目录中,重启elasticsearch