前言
共6
题。
为什么要用ES?
从mysql为什么不行来说
数据量大又涉及到模糊查询。
涉及到分词查询。
什么是倒排索引?
倒排索引其实就是分词 和查询:
-
分词:把原始内容分词,分词后和原始文档有对应关系;
-
查询:根据分词可以获取到原始文档。
ES中的查询关键字有哪些(方法)?
term
:精确查询;match
:分词查询(模糊查询);range
:范围查询;bool
:复合查询;
must
与、should
或、must_not
非、filter
与
geo_distance
:地理位置查询。
ES中字符串类型有几个?
有keyword
和Text
:keyword
类型是不会分词的,Text
类型会分词。
ES中query和filter的区别?
都可以实现ES
中的查询,区别是:
-
query
查询操作不仅仅会进行查询,还会计算分值; -
filter
查询操作仅判断是否满足查询条件,不会计算任何分值,也不会关心返回的排序问题。
如何保证ES和MySQL的数据一致性?
有以下四种方式:
-
同步双写 :如果是分布式项目,通过
fegin
进行远程调用; -
异步消息 :通过
MQ
发消息(微服务之间); -
canel监听 :使用
canel
监听MySQL
的binlog
日志,当发现写入操作后,立即读取内容,写入ES
; -
logstatsh :使用开源的数据搜索引擎
logstatsh
将MySQL
中的数据实时传输给ES。