我正在搜索单词“ stud”,并且期望结果按此顺序
“职业”:“学生(Betriebswirtschaft)”
“职业”:“学生(人类医学)”
“职业”:“学生(鲍威森)”
“职业”:“学生(化学)”
“职业”:“学生(Architektur)”
“职业”:“ Oberstudienrat /Oberstudienrätin”
“职业”:“ Nagelstudioinhaber”
但我按此顺序得到了结果
“职业”:“学生(Betriebswirtschaft)”
“职业”:“学生(人类医学)”
“职业”:“ Oberstudienrat /Oberstudienrätin”
“职业”:“学生(鲍威森)”
“职业”:“学生(化学)”
“职业”:“ Nagelstudioinhaber”
“职业”:“学生(Architektur)”
像这些单词“ Oberstudienrat /Oberstudienrätin”一样,“ Nagelstudioinhaber”应该在结尾处,因为我首先想看到开头带有“ stud”的结果,然后是中间带有“ stud”的单词< / p>
{
"query":{
"bool":{
"must":[
{
"query_string":{
"query":"*Stud*",
"fields":[
"occupation"
]
}
}
]
}
},
"rescore":{
"window_size":500,
"query":{
"score_mode":"multiply",
"rescore_query":{
"bool":{
"should":[
{
"match":{
"occupation":{
"query":"Stud*",
"boost":3
}
}
}
]
}
},
"query_weight":2.7,
"rescore_query_weight":3.2
}
} }
答案 0 :(得分:0)
如果您的字段被标记,那么您很难在同一字段上进行排序。
修改字段以实现排序。此字段应为原始类型,或仅对其应用关键字标记符和小写标记符。原始字段将不会被分析,这意味着总共将是一个术语,因此可以用于排序。为此,您必须更新映射,然后使用reindex api来更新数据。
您的字段将具有类似于
的映射PUT my_index
{
"mappings": {
"properties": {
"city": {
"type": "text",
"fields": {
"raw": {
"type": "keyword"
}
}
}
}
}
}
并使用新字段进行排序。
GET my_index/_search
{
"query": {
"match": {
"city": "york"
}
},
"sort": {
"city.raw": "asc"
}
}