elasticsearch学习命令指南
2022-09-10 09:21:11 0 举报
AI智能生成
es学习的重要资料
作者其他创作
大纲/内容
原理
lucene
最先进、功能最强大的搜索库
直接开发、复杂
api复杂
es和lucene
Near Realtime(NRT)
Cluster
Node
Document&field
Index
Type
分词
类型
ik_smart
ik_max_word
组成
Character Filters
Tokenizer
Token Filters
内置
Standard Analyzer - 默认分词器,按词切分,小写处理
Simple Analyzer - 按照非字母切分(符号被过滤),小写处理
Stop Analyzer - 小写处理,停用词过滤(the ,a,is)
Whitespace Analyzer - 按照空格切分,不转小写
Keyword Analyzer - 不分词,直接将输入当做输出
Pattern Analyzer - 正则表达式,默认 \W+
Language - 提供了 30 多种常见语言的分词器
Customer Analyzer - 自定义分词器
阿里
AliNLP分词插件(analysis-aliws)
调优
内存问题
每个节点jvm配置内存不要大于系统总内存的一半同时不要大于32G
随着数据量的增加,内存的使用会越来越多,gc回收会越来越慢
预算是固定的,硬件资源也是固定的,只能采取其他办法
数据要根据业务做成多索引的方式,因为每个索引都是占用内存的
定时对索引进行合并(merge segment)
jvm垃圾回收机制可以考虑配置为 UseG1GC
文件句柄
基于文件的数据库,随着数据量的增加,打开的句柄越来越多
硬盘问题
冷热数据分离
磁盘>80%不写入
OOM
vm内存
调整内核参数
脑裂
master和node没有分开
Master节点:node.master: true node.data: false
Data节点:node.master: false node.data: true
Client 节点:node.master: false node.data: false
同行
solr
基于lucene
优点
Solr有一个更大、更成熟的用户、开发和贡献者社区
支持添加多种格式的索引
Solr比较成熟、稳定
不考虑建索引的同时进行搜索,fast
缺点
.建立索引时,搜索效率下降,实时索引搜索效率不高
比较
Solr 利用 Zookeeper 进行分布式管理,而 Elasticsearch 自身带有分布式协调管理功能;
Solr 支持更多格式的数据,而 Elasticsearch 仅支持json文件格式;
Solr 官方提供的功能更多,而 Elasticsearch 本身更注重于核心功能,高级功能多有第三方插件提供;
Solr 在传统的搜索应用中表现好于 Elasticsearch,但在处理实时搜索应用时效率明显低于 Elasticsearch。
Solr 是传统搜索应用的有力解决方案,但 Elasticsearch 更适用于新兴的实时搜索应用。
概述
基于Lucene库的搜索引擎
Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言
结构化数据
数据库,元数据
非结构化数据
邮件,word文档
搜索方法
顺序扫描法(Serial Scanning)
全文索引
半结构化数据
XML,HTML
索引
反向索引
词典-倒排表
缺点:加上新建索引的过程,全文检索不一定比顺序扫描快,尤其是在数据量小的时候更是如此。
优点:顺序扫描是每次都要扫描,而全文索引可一次索引,多次使用;检索速度快
创建索引
将原文档(Document)传给分词组件(Tokenizer)
将词次(Token)传给语言处理组件(Linguistic Processor)
将词元(Term)传给索引组件(Indexer)
倒排索引
全表查询的时间复杂度是o(n)
索引列进行查询,其时间复杂度为o(logn)
倒排索引
o(1)
命令
_cat
/_cat/allocation #查看单节点的shard分配整体情况
/_cat/shards #查看各shard的详细情况
/_cat/shards/{index} #查看指定分片的详细情况
/_cat/master #查看master节点信息
/_cat/nodes #查看所有节点信息
/_cat/indices #查看集群中所有index的详细信息
/_cat/segments #查看各index的segment详细信息,包括segment名, 所属shard, 内存(磁盘)占用大小, 是否刷盘
/_cat/segments/{index}#查看指定index的segment详细信息
/_cat/count #查看当前集群的doc数量
/_cat/count/{index} #查看指定索引的doc数量
/_cat/recovery #查看集群内每个shard的recovery过程.调整replica。
/_cat/recovery/{index}#查看指定索引shard的recovery过程
/_cat/health #查看集群当前状态:红、黄、绿
/_cat/pending_tasks #查看当前集群的pending task
/_cat/aliases #查看集群中所有alias信息,路由配置等
/_cat/aliases/{alias} #查看指定索引的alias信息
/_cat/thread_pool #查看集群各节点内部不同类型的threadpool的统计信息,
/_cat/plugins #查看集群各个节点上的plugin信息
/_cat/fielddata #查看当前集群各个节点的fielddata内存使用情况
/_cat/fielddata/{fields} #查看指定field的内存使用情况,里面传field属性对应的值
/_cat/nodeattrs #查看单节点的自定义属性
/_cat/repositories #输出集群中注册快照存储库
/_cat/indices/{index} #查看集群中指定index的详细信息
/_cat/templates #输出当前正在存在的模板信息
坑
Master和DataNode未分离,导致集群不稳定
未使用内网IP,导致恢复缓慢
ELK&Elastic Stack
Kibana的分析
logstash
管理
组件
节点
分片
有0个或多个副本
副本
多租户
优点
分布式
分发是实时
接近实时的搜索
Gateway 模式,备份简单
node之间对等网络结构
缺点
只有一名开发者
还不够自动
0 条评论
下一页