需求:如何让ES的某个字段既能支歭精确匹配查找也能支持模糊检索?
方法:将字段的mapping设置为如下这种即可:
Text:会分词然后根据分词后的内容建立倒排索引(反向索引)
keyword:不进行分词,直接直接根据字符串内容建立倒排索引(反向索引)
ElasticSearch字符串将默认被同时映射成text和keyword类型将会自动创建上面的动态映射(dynamic mappings),比如上面的name字段不做任何配置ES就会默认给他映射成两个类型。
但是如果要对text类型做其他配置比如加入中文分词器,该如何做呢若伱是使用Spring-data-Elasticsearch,那么有两种办法可以实现这个需求:
删除原有的mapping后再次运行程序新生成的mapping就是json文件中定义的配置,这种方式自由度较高但對mapping的掌握要求也较高。