当not_analyzed和analyzer在同一映射中使用时会发生什么?

时间:2015-07-29 11:14:22

标签: elasticsearch lucene elasticsearch-mapping

在弹性搜索映射中,据我所知,index:not_analyzed意味着它会在不进行分析的情况下对值进行索引。

当我们想要指定分析器时,我们可以使用analyzer:<some-analyzer>

我见过有些人使用同一领域的设置,如

"property":{
    "type":"string",
    "index":"not_analyzed",
    "analyzer":"analyzer_keyword"
 }

上述设置的效果是什么,这似乎与我相矛盾。我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

至少在ES 1.6中,如果字段映射到 not_analyzed 并且指定了分析器,则它会覆盖 search_analyzer

,即OP中的映射等同于

"property":{
    "type":"string",
    "index":"not_analyzed",
    "search_analyzer":"analyzer_keyword"
 }

映射为 not_analyzed 的字段将索引分析器始终设置为keyword analyzer not_analyzed 的默认搜索分析器是关键字但是看起来这可以通过分析器覆盖/ search_analyzer设置老实说对我来说没有意义。

OP中的映射可能与早期版本ES issue兼容,其中看起来像标准分析器是默认搜索分析器,即使是映射为 not_analyzed