开始之前我先说一下在es中Settings和Mappings的含义以及区别。
首先settings是对于索引的元数据信息的设置,包括对分片和副本数的修改
mappings是对于索引数据的映射,主要是指每个字段的数据类型
既然说到了字段数据类型,我们回到主题,我们知道,在es中数据类型很多,我就不一一列举了,这里说一下我们常见的字符串类型
,在ElasticSearch5.0以后,对字符串类型做了重大的改变,那就是取消掉了string类型,把string类型拆分成了text和keyword类型,
其中text表示可以分词,用户全文检索,可以模糊匹配搜索,keyword是用于关键词搜索的,只能对某个值进行整体的搜索
text类型:
city": { "type": "text", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 } }
如果city字段的值是:日本是个岛国,那么我们搜索日本,是可以搜索到这条记录的
keyword类型:
"DestCityName": { "type": "keyword" },
如果DestCityName字段的值是:日本是个岛国,我们搜索日本的时候,是搜索不到这条记录的,需要把"日本是个岛国"作为一个整体来搜索,才可以,这就是text和keyword作为字符串类型的区别,也就是分词和不分词的区别