我正在尝试使用前缀查询来返回可能匹配的列表。前缀字段是未分析的整数。我希望如此:
{
"prefix": {"id":"1"}
}
将返回id以1开头的所有文档(例如1,10,11,12,13等)。但是,它只返回完全匹配(例如1)。
前缀查询是否适用于整数字段?
答案 0 :(得分:0)
我还在学习弹性搜索,但我相信这个领域必须是一个字符串。您可以通过使用multi_field类型并添加可以运行前缀查询的字符串字段来解决此问题。我对以下运行前缀查询所需的许多字段(整数和非整数)使用以下内容:
在地图中的settings.analysis下,添加:
"analyzer": {
"str_filtered_search_analyzer": {
"tokenizer": "keyword",
"filter": [
"lowercase"
]
},
"str_prefix_analyzer": {
"tokenizer": "keyword",
"filter": [
"lowercase",
"prefix"
]
}
}
然后在mappings.type.properties下(用您的类型替换类型,例如用户):
"id": {
"type": "multi_field",
"fields": {
"id": {
"type": "integer"
},
"prefix": {
"type": "string",
"index_analyzer": "str_prefix_analyzer",
"search_analyzer": "str_filtered_search_analyzer"
}
}
}