ElasticSearch 知识点汇总
1.ELK
elasticsearch
elastic
1.elasticsearch 介绍
2.elasticsearch 环境
3.elasticsearch进阶
4.elasticsearch集成
5.elasticsearch优化
6.elasticsearch面试题
1.elasticsearch 介绍 7.8.X version
elasticsearch中文官网:https://www.elastic.co/cn/
postman官网:https://getpostman.com
version:7.11.2
elasticsearch,kibana,logstach
get,post,head,put,delete
9300
9200
elasticsearch 是文档型数据库,java语言开发的
倒排索引
正排索引
基础操作:
http://127.0.0.1:9200
get 获取
put 更新
post 更新创建
条件查询:
分页查询:起始位置,from(2).size(3) 查询第2页,每页3条数据
组合查询:
模糊查询:
最大值查询
排序
范围查询
全文检索
完全匹配
高亮查询
聚合操作:avg
映射关系:
text,可用分词查询
keyword,不能分词查询
index:false ,没有索引,不支持查询
post: http://127.0.0.1:9200/shoping_doc 添加文档
post: http://127.0.0.1:9200/shoping_doc/101 添加文档
2.elasticsearch 环境
单点和集群elasticsearch
3.elasticsearch进阶
java,c# api 操作ES:创建索引,查询,删除,更新
es扩容:增加副本数,增加吞吐量
http://127.0.0.1:1001/users/_settings
json:
{
"number_of_replicas":2 //将每个分片的副本数从1个修改为2个副本,应对大量的访问,提供查询的吞吐量
}
路由计算:决定插入数据存放在分片上的方式,查询也按这个方式,存放规则和查询规则一样
分片是ES里最小的工作单元
倒排索引的结构,适用于快速全文搜索,
分词器:中文,英文,
ik_max_word, 细粒度分词,张三
ik_smart
kewword
text:空格分词
词条:索引中最小存储查询单元,词组,单词
词典:词条的集合,b+树
倒排表:关键词出现的位置,频率
写入延时:写主分的延时+ 并行写入副本的最大延时,合理配置副本数量
分析器:分词
分词器:IK 中文分词器,单个字分词,词组分词ik_smart,ik_max_word 分词粗细的区别
自定义字符过滤器
ES 5.X 支持多种type
ES 6.X 支持1种type
ES 7.X 不支持type,默认类型:_doc json
index
filed 字段
mapping 结构信息text,kework,index
分片shards:分表,扩展容量,10亿的文档,放在多个shards 提供访问速度
副本replicas: 防止数据分片数据丢失,提高访问吞吐量,可用从多个副本获取数据
分配:allocation
系统架构:
master
node1:包括分片,副本
node2
cluster
4.elasticsearch集成
spring data
flink 框架集成
4. -----------------------------Elasticsearch客户端,C#的ES驱动--------------------------------------
1.使用Elasticsearch.Net, https://github.com/elastic/elasticsearch-net
2.基础使用:NEST作为elasticsearch客户端
5.elasticsearch优化
万物及索引
es 基础是lucenu,所有的索引和文档数据是存储在本地的磁盘中的,
5.1 ES重度使用磁盘,磁盘的吞吐能力决定了吞吐量越大,你的节点越稳定,使用I/O的技巧:SSD,RAID0 并行处理强,不要远程挂载
1个分片在创建索引是确定,即一个lucenu索引,会消耗一定文件句柄,内存,cpu,一个分片是一个独立的搜索引擎
每一个搜索请求都需要命中索引中的每一个分片,如何每一个分片都处于不同的节点还好,但如果多个分片处于同一个节点使用会竞争资源。
分片原则:分片数不超过节点数据的3倍,若有三个节点,分片数据为9比较合适
节点数《=主分片数据 * (副本数 +1)
路由选择优化
写入速度优化
合理使用合并
减少refresh的次数
减少副本数
优化内存:1G默认,不超过50%物理内存
传输压缩参数:true
6.elasticsearch面试题
1.为什么要使用es?
查询块,
2.es 写文档的流程,删除,更新的流程?查询流程?
3。ES读写一致性如何保证?
4.es 中集群,节点,索引,文档,类型是什么?
5.ES倒排索引是什么?
是在存储数据时将关键词和数据关联,保存到倒排表中,当查询时,将分词后的内容在倒排表中进行查询,匹配数据。
64G+SSD+分片+副本
es head 安装
cmd
cnpm install
npm run start
1.ES HEAD
1.node.js vode -v
2.cmd npm install -g grunt -cli grunt -version
3.https://github.com/mobz/elasticsearch-head 修改gruntfile.js 添加hostname:"*" ; npm install ; npm run start ;http://localhost:9100
http.cors.enabled:true
http.cors.allow-origin:"*"
2. es健康值查询:
_cat/health GET _cat/health?v 表格显示,最大任务等待
_cluster/health json显示 迁移总的节点,初始化的节点,为分配的节点
3.倒排索引
全文搜索引擎:自然语言处理NLP,爬虫,网页处理,
垂直搜索引擎
关系型数据库:mysql,sql server pgsql
非关系型数据库:redis,memcached,mongodb
搜索引擎数据库:es,solr,splunk
4.lucen: segment
4.1 client --> api--> (索引引擎【segmnet],文本分析引擎,查询引擎)
数据结构:
倒排索引:对每一个文本分词为不同的词项,一个此项对应所有出现这个词项的位置
词项字典term dicionary:小米 存储所有拆分的词项,segment; .tip
倒排表posting list:词项列表,词频:1,2,3 ; .doc
词项索引term index:节省内存,提高查询速度
倒排索引的压缩算法:
FOR: 存储计算的差值,减少bit,适合稠密数据
RBM:
5.filter 查询:不按得分排序,有缓存
GET product/_search
{
"query":{
"bool":{
"filter":[
{
"term":{
"name":"phone"
}
}
]
}
}
}
通过浏览器按照elasticsearch head 插件
1.打开:http://extb.cqttech.com/search/Elasticsearch
2.搜索:Elasticsearch
3.按照
4.输入es 的外网地址连接ip:9200
5.输入用户名,密码
学习指南,资料汇总 转发
www.kuangstudy.com 狂神
https://blog.csdn.net/u011863024/article/details/115721328 介绍,原理,类型
https://blog.csdn.net/qq_45988496/article/details/116380830 学习笔记、详解, 操作
https://www.yuque.com/yingwenerjie/yir85b/cvqw61 es 数据类型