我是Elasticsearch世界的初学者,而且我不知道当一个名为.keyword的属性时它意味着什么。只有当我出现在"管理" > "索引模式"。
只有那些属性(propertie.keyword)才有选项'可聚合'活性
&#39>地点'之间的区别是什么?和' locality.keyword'。
当我这样做时,我得不到相同的结果
{'match': {'locality': "Sant Climent"}}
或
{'match': {'locality.keyword': "Sant Climent"}}
有人可以向我解释一下这些差异以及每种东西的用途吗?我疯了。
(我使用最新版本的Elasticsearch BTW,6.X)。
答案 0 :(得分:0)
您的字段已编入索引两次:一次locality
使用text datatype
编制索引,并用于执行全文搜索。您的文本将被添加到标记中,您可以应用过滤器转换并检索每个单词。例如。一旦你对文本进行了标记,你就可以应用一个禁用词列表来删除无意义的单词或词干分析器,从而可以从词干中检索单词。您可以使用match
查询对此字段进行查询。 locality.keyword
与keyword datatype
索引的内容相同。这意味着您的文本被视为唯一令牌,您只能通过该字段上的文字搜索来检索您的内容 - 如果您不提供关键字,则规范化程序也区分大小写!,没有全文。您可以使用term
查询对此字段进行查询。出于这个原因,你只能在keyword
字段内容上进行聚合:服务器可以在字段上创建一种groupby,因为它的内容就像它一样,并且不是由不同的单位组成 - tokens.If如有任何其他疑问,请寻求帮助: - )
答案 1 :(得分:0)
您需要了解text datatype和keyword datatype。
您可以将字段映射为text
和keyword
,如下所示:
{
"properties":{
"locality":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
},
... other fields here
}
执行此操作时,您现在可以将locality
字段作为text
查询,或者您可以使用locality.keyword
将其作为keyword
进行查询。