我有类别字段,我需要为其配置映射,以便仅在术语级查询中使用它。
我已经看到了这种方法:
"category": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword"
}
}
}
另一个是通过使用分析器的“关键字”:
"category": {
"type": "text",
"analyzer": "keyword"
}
我的问题是:两种映射之间有什么区别?如何为术语级查询配置文本字段?
答案 0 :(得分:2)
"category": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword"
}
}
}
此定义实际上是类别的Multifield表示。在这种情况下,您将有两个不同版本的字段-将分析一个可以由category
直接访问的版本,另一个将是Not-Analyzed
版本,可以由category.keyword
访问的版本。>
您指定的另一个定义:
"category": {
"type": "text",
"analyzer": "keyword"
}
将类别定义为分析器为keyword
的文本字段,即类别字段将存储为Not-Analyzed
字段。
在发布5.0
版本的Elasticsearch之后,默认情况下所有类型为text
的字段都包含未分析的版本,如here
希望这会有所帮助!