【发布时间】:2022-02-04 12:35:28
【问题描述】:
我有这个设置的索引
"analysis": {
"filter": {
"autocomplete_filter": {
"type": "edge_ngram",
"min_gram": 1,
"max_gram": 10
}
},
"analyzer": {
"autocomplete": {
"type": "custom",
"tokenizer": "standard",
"filter": [
"lowercase",
"autocomplete_filter",
"asciifolding",
"elision",
"standard"
]
},
"autocomplete_search": {
"tokenizer": "lowercase"
}
},
"tokenizer": {
"autocomplete": {
"type": "edge_ngram",
"min_gram": "3",
"max_gram": "32"
}
}
}
并具有名称字段的映射
"name": {
"type": "text",
"analyzer": "autocomplete",
"search_analyzer": "autocomplete_search",
"fields": {
"keyword": {
"type": "keyword"
}
}
}
现在我有几个文档中的名称示例。 Name 是一个包含名字和姓氏的字段。
- --макс---
- -макс-
- {某事} макс
- макс {某事}
我正在使用此查询以按字母排序查找具有该名称的文档
{
"query": {
"match": {
"name": {
"query": "макс",
"operator" : "and"
}
}
},
"sort": [
{"name.keyword" : "asc"}
]
}
正如我所写的那样,它带来了结果。但我希望 макс {something} 会比其他人排在第一位,因为它是从我写的查询开始的。
有人可以帮忙吗
【问题讨论】:
标签: sorting elasticsearch filter