一、基本概念
1、ElasticSearch是什么:
Elasticsearch是一个分布式的,开源的NoSQL数据库。通常做为文档搜索数据库。
2、什么是索引(indices)
indices分为两种情况,一指索引,另一个是指往索引里插入数据的动作。索引可理解为类似于关系型数据库表的概念,而不是网络上大部分理解的数据库的概念。索引就是一张分布在不同服务器之上的大表。
3、什么是分片(shards)
一个或多个分片组成一个索引(indices)。理解为关系型数据库里的水平分表。
4、什么是分段(segment)
一个或多个分段组成一个分片。
5、什么是副本
ES将数据副本分为主从两部分,即主分片(primary shard)和副分片(replica shard)。
6、什么是分词器,分词
分词是指把一段话或一篇文章通过语义拆分成最小的单词。分词器是分词使用的软件。
7、什么是倒排索引
倒排索引就像传统图书馆找书所用到的卡片,需要先按顺序找出书名对应的卡片,上面标注书名,然后标注书所在的书架编号,然后通过书架编号才能找到我们需要的书。倒排索引中保存的是分词跟文档对应的ID。
8、什么是主节点
主节点的职责是和集群操作相关的内容,如创建或删除索引,跟踪哪些节点是群集的一部分并决定哪些分片分配给相关的节点。
9、什么是数据节点
数据节点是存储索引数据的节点,主要对索引进行增删改查操作。
10、什么是协调节点
当主节点和数据节点配置都设置为false的时候,该节点只能处理路由请求,处理搜索,分发索引操作。
11、什么是ES集群脑裂
脑裂是指一个集群选举产生了两个主节点,设置discovery.zen.minimum_master_nodes: (n/2)+1,n为有资格成为主节点的节点数(node.master=true)就可避免。
12、什么是ES的冷热架构
Hot-Warm Architecture。热节点存放用户最关心的热数据,搜索速度快;冷节点存放用户关心优先级低的冷数据,搜索速度慢,冷节点的磁盘与内存比可以比较大,就是同样的cpu,内存配置,冷节点可以存储更多的数据。
13、ES模板的作用是什么
当新建一个 ES 索引时,会自动匹配模板,完成索引的基础部分搭建。很多人ES用了很长的时间,还不知道有模板存在。
14、ES MAPPING作用是什么
映射(mapping)是定义一个文档以及其所包含的字段如何被存储和索引的方法。像关系型数据库的建表语句,ES中会默认创建。
15、keyword与text的区别是什么
ES 5.*之后,把string字段设置为了过时字段,引入text,keyword字段,这两个字段都可以存储字符串使用,但建立索引和搜索的时候是不太一样的
keyword:存储数据时候,不会分词建立索引
text:存储数据时候,会自动分词,并生成索引(这是很智能的,但在有些字段里面是没用的,所以对于有些字段使用text则浪费了空间)。
string默认会建立 keyword跟text两个字段,可以在mapping中设置只保存其中的一个。
16、index.merge.scheduler.max_thread_count参数该怎么设置
数据节点磁盘为sata硬盘的时候,该参数设置为1,磁盘为ssd的时候,可以不用设置,使用默认值。
二、ES模块
17、Cluster模块作用是什么?
Cluster模块是主节点执行集群管理的封装实现,管理集群状态,维护集群层面的配置信息。
18、allocation模块作用是什么?
allocation封装了分片分配相关的功能和策略。
19、Discovery模块作用是什么?
Discovery发现模块负责发现集群中的节点,以及选举主节点。
20、gateway模块作用是什么?
gateway负责对收到Master广播下来的集群元数据的持久化存储。
21、Indices模块作用是什么?
Indices索引模块管理全局级的索引设置。
22、HTTP模块作用是什么?
HTTP模块允许通过JSONoverHTTP的方式访问ES的API,HTTP模块本质上是完全异步的,这意味着没有阻塞线程等待响应,使用到Netty框架。
23、Transport模块作用是什么?
Transport传输模块用于集群内节点之间的内部通信。
24、Engine模块作用是什么?
Engine模块封装了对Lucene的操作及translog的调用,它是对一个分片读写操作的最终提供者。
三、ES 常用API
25、health API的作用是什么?
GET _cluster/health显示ES的健康状态,RED,YELLOW,GREEN, RED表示集群有主副本和副副本同时没有分配的情况,YELLOW表示存在副本没有分配,GREEN表示集群正常。
26、怎么创建索引
PUT 索引名
27、怎么关闭索引
POST 索引名/_close,或者在KIBANA界面manager-index Management中选中索引,关闭。
28、怎么打开索引
POST 索引名/_open,或者在KIBANA界面manager-index Management中选中索引,打开。
29、怎么删除索引
DELETE 索引名,或者在KIBANA界面manager-index Management中选中索引,删除。
30、检查索引名是否存在
HEAD 索引名
31、?help——帮助选项。
将在列表中提供 API 可用的字段,其中包含短名称和长名称、说明等。
GET _cat/indices?help
32、?h =-“ h”
使用上方“帮助”显示中的短名称或长名称指定要包括在结果中的字段。这些用逗号分隔,没有空格。
GET _cat/indices?h=docs.count,store.size
这样返回结果没有表头
33、?v——‘v’
在回复的顶部包括字段名称。
GET _cat/indices?v&h=docs.count,store.size
34、?s——‘s’
用于排序,使用列出的字段作为排序键。
如下所示:我们可能会看到节点列表。包括:返回字段名称,字段名称要显示并按名称name排序:GET /_cat/nodes?v&h=heap.percent,diskUsedPercent,cpu,master,name&s=name
35、统计所有这些logstash *前缀索引的文档总数的方法。
GET /_cat/count/logstash*?v
36、通配符索引列表获取
包含:大小,文档计数,状态等。
GET /_cat/indices/logstash*?v
37、找到size 最大的索引
GET /_cat/indices/logstash-*?v&h=index,ss&s=ss:desc
38、查看未分配的分片及原因
GET _cat/shards?v&h=index,shard,prirep,state,unassigned.reason&s=state
39、列举已定义的所有模板
GET /_cat/templates?v&s=order,name
40、分片分配查看
GET /_cat/allocation?v
41、运行任务查看
GET /_cat/pending_tasks?v
42、清理缓存
POST /_cache/clear