Elastic Search

ElasticSearch

持续更新中…

选择es的原因

在数据量非常大的时候,业务进行模糊查询会导致索引失效,查询效率低下,使用es进行查询,可以提高查询速度。

text和keyword类型的区别

  • keyword 类型是不会分词的,直接根据字符串内容建立倒排索引,所以keyword类型的字段只能通过精确值搜索到;

  • Text 类型在存入 Elasticsearch 的时候,会先分词,然后根据分词后的内容建立倒排索引

更新和删除文档的流程

  • 更新和删除属于写操作,但是es中文档是不可变的,故不能被删除或改动以展示其变更
  • 磁盘上的每个段有一个相应的.del文件,删除请求时,在在.del文件中被标记为删除,该文档依然能匹配查询,但会被过滤掉;更新请求时,在.del文件中被标记为删除,然后创建一个新的文档

倒排索引

其实就是Luence的倒排索引,它会在存储数据时将关键词和数据进行关联,保存到倒排表里,查询时将查询内容进行分词后在倒排表里查询,最后去匹配数据。

数据库修改信息如何同步到ElasticSearch

  • 同步调用:在写入数据库的时候,也同步往ES里写一份
  • MQ中间件,有数据变化时,通知mq,然后监听mq,实现数据同步到es

你可能感兴趣的:(java开发面试题,中间件)