当它出现在Elasticsearch中的<propertie> .keyword时意味着什么?

时间:2018-03-27 10:28:42

标签: elasticsearch

我是Elasticsearch世界的初学者,而且我不知道当一个名为.keyword的属性时它意味着什么。只有当我出现在&#34;管理&#34; &GT; &#34;索引模式&#34;。

只有那些属性(propertie.keyword)才有选项&#39;可聚合&#39;活性

&#39>地点&#39;之间的区别是什么?和&#39; locality.keyword&#39;。

当我这样做时,我得不到相同的结果

{'match': {'locality': "Sant Climent"}}

{'match': {'locality.keyword': "Sant Climent"}}

有人可以向我解释一下这些差异以及每种东西的用途吗?我疯了。

(我使用最新版本的Elasticsearch BTW,6.X)。

2 个答案:

答案 0 :(得分:0)

您的字段已编入索引两次:一次locality使用text datatype编制索引,并用于执行全文搜索。您的文本将被添加到标记中,您可以应用过滤器转换并检索每个单词。例如。一旦你对文本进行了标记,你就可以应用一个禁用词列表来删除无意义的单词或词干分析器,从而可以从词干中检索单词。您可以使用match查询对此字段进行查询。 locality.keywordkeyword datatype索引的内容相同。这意味着您的文本被视为唯一令牌,您只能通过该字段上的文字搜索来检索您的内容 - 如果您不提供关键字,则规范化程序也区分大小写!,没有全文。您可以使用term查询对此字段进行查询。出于这个原因,你只能在keyword字段内容上进行聚合:服务器可以在字段上创建一种groupby,因为它的内容就像它一样,并且不是由不同的单位组成 - tokens.If如有任何其他疑问,请寻求帮助: - )

答案 1 :(得分:0)

您需要了解text datatypekeyword datatype

您可以将字段映射为textkeyword,如下所示:

{  
   "properties":{  
      "locality":{  
         "type":"text",
         "fields":{  
            "keyword":{  
               "type":"keyword",
               "ignore_above":256
            }
         }
      },
      ... other fields here
}

执行此操作时,您现在可以将locality字段作为text查询,或者您可以使用locality.keyword将其作为keyword进行查询。