ElasticSearch是什么?基于Lucene的,那么为什么不是直接使用Lucene呢?
Lucene 可以说是当下最先进、高性能、全功能的搜索引擎库。Elasticsearch 也是使用 Java 编写的,它的内部使用 Lucene 做索引与搜索,但是它的目的是使全文检索变得简单,通过隐藏 Lucene 的复杂性,取而代之的提供一套简单一致的 RESTful API。
然而,Elasticsearch 不仅仅是 Lucene,并且也不仅仅只是一个全文搜索引擎:
-
一个分布式的实时文档存储,每个字段 可以被索引与搜索
-
一个分布式实时分析搜索引擎
-
能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据
一个ES和数据库的对比

ELK 技术栈的常见应用场景?
-
日志系统

增加数据源,和使用MQ

-
Metric收集和APM性能监控

ES中索引模板是什么?
索引模板是一种告诉Elasticsearch在创建索引时如何配置索引的方法。
-
使用方式
在创建索引之前可以先配置模板,这样在创建索引(手动创建索引或通过对文档建立索引)时,模板设置将用作创建索引的基础。
-
模板类型
-
组件模板是可重用的构建块,用于配置映射,设置和别名;它们不会直接应用于一组索引。
-
索引模板可以包含组件模板的集合,也可以直接指定设置,映射和别名。
ES中索引的生命周期管理?
-
为什么会引入?
随着时间的增长索引的数量也会持续增长,然而这些场景基本上只有最近一段时间的数据有使用价值或者会被经常使用(热数据),而历史数据几乎没有作用或者很少会被使用(冷数据),这个时候就需要对索引进行一定策略的维护管理甚至是删除清理,否则随着数据量越来越多除了浪费磁盘与内存空间之外,还会严重影响 Elasticsearch 的性能。
-
哪个版本引入的?
在 Elastic Stack 6.6 版本后推出了新功能 Index Lifecycle Management(索引生命周期管理),支持针对索引的全生命周期托管管理,并且在 Kibana 上也提供了一套UI界面来配置策略。
-
索引生命周期常见的阶段?
-
hot: 索引还存在着大量的读写操作。
-
warm:索引不存在写操作,还有被查询的需要。
-
cold:数据不存在写操作,读操作也不多。
-
delete:索引不再需要,可以被安全删除。
ES查询和聚合的有哪些方式?
-
DSL
-
基于文本 - match, query string
-
基于词项 - term
-
复合查询 - 5种
-
EQL Elastic Query Language
-
bucket
-
metric
-
pipline
-
SQL
ES查询中query和filter的区别?
query 是查询+score, 而filter仅包含查询, 比如在复合查询中constant_score查询无需计算score,所以对应查询是filter而不是query。
比如
GET /test-dsl-constant/_search { "query": { "constant_score": { "filter": { "term": { "content": "apple" } }, "boost": 1.2 } } }
ES查询中match和term的区别?
term是基于索引的词项,而match基于文本。
比如:
GET /test-dsl-match/_search { "query": { "match": { "title": "BROWN DOG" } } }
等同于
GET /test-dsl-match/_search { "query": { "match": { "title": { "query": "BROWN DOG", "operator": "o