你简单描述一下DSL语法

DSL是一种以json形式标识的,由ES提供的一种查询语言,它由两部分组成,DSL查询和DSL过滤。

DSL过滤类似于模糊查询,DSL查询类似于精确查询

你说一下 match和term的区别?

term:不会对搜索词进行分词处理,而是作为一个整体与目标字段进行匹配,若完全匹配,则可查询到

match:会将搜索词分词,再与目标查询字段进行匹配,若分词中的任意一个词与目标字段匹配上,则可查询到

你使用过ES的哪些聚合查询?

指标聚合,比如求和,求最大值,最小值,平均数

数量统计聚合,计算满足条件数据的总条数,相当于sql中的count

去重聚合,它会计算非重复的数据个数,相当于sql中的distinct

桶聚合,它会将某个field的每个唯一值当成一个桶,并计算每个桶内的文档个数,相当于sql中的group by

最高权值聚合,它会匹配每组前n条数据,相当于sql中的group by后取出前n条

ES高亮怎么做的?

使用HighlightBuilder对关键字作高亮处理,由于我们项目使用的是SpringBoot整合ES的jar包,结果没有进行高亮处理,我们使用ElasticsearchTemplate的queryForPage方法来获取结果,再手动进行分页封装返回前台

你们ES和数据库的数据一致性怎么做的

代码控制的,数据库做了写操作,直接更新ES中的数据,我知道可以通过 Logstash 中数据和ES的数据自动同步。

ES分片机制了解吗

ES的索引库由多个分片 shard组成,shard分为primary shard主shad和replica shard 副本,主shard承担写请求,replica副本的数据从primary复制而来,同时分担读请求,primary shard的数量设定了就不能修改,replica数量可以修改。