ES中遇到的一些问题以及ES与Mysql数据一致性问题

项目最近引入ES,优化查询效率。以下记录我在项目中遇到的一些奇怪问题。

1.ES中不能对text类型进行term精准查询。

众所周知text类型的数据在elasticsearch中会进行分词并建立倒排索引,因此它会对每个词进行索引,而不会建立整个句子的索引。

term搜索时会对整个句子作为关键词进行搜索,由于没有建立整个句子的关键词索引,因此无法查找到东西。

更新~

解决方法:在一个text类型的属性下面定义子属性,用field修饰,参考这篇

es的mapping参数-fields - 欢乐豆123 - 博客园 (cnblogs.com)

上图:

ES中遇到的一些问题以及ES与Mysql数据一致性问题_第1张图片

可以看到这个字段本身是text属性,但是我们增加了fields,fields里面有keyword子属性,这个属性是keyword类型的,支持term查询,所以要进行term查询的时候就用procurementMode.keyword这样的方式查。

ES与Mysql数据一致性问题

淘宝太细了:mysql 和 es 的5个一致性方案,你知道吗?_es和mysql数据一致性-CSDN博客

有五种解决方案,参考上面这篇博客。

项目中用的是类似异步双写的方法,然后用全量同步的方式进行兜底。

你可能感兴趣的:(elasticsearch,大数据,搜索引擎)