弹性搜索 - 确定索引的优先级



假设我有三个指数:城市、博物馆和景点。

现在我正在查询所有索引(_all(以获取一个术语,例如"维也纳"

'query' :{
'fuzzy' : {
'name': 'vienna'
}
}

结果我得到:

维也纳
  1. :维也纳艺术博物馆(Museum)
  2. 维也纳
  3. :维也纳历史博物馆(Museum)
  4. 维也纳的里森拉德(Sight)
  5. 维也纳(cities)

有没有办法优先考虑指数,这样我就可以得到第一个城市,而不是景点,最后是博物馆,像这样:

  1. 维也纳(cities)
  2. 维也纳的里森拉德(Sight)
  3. 维也纳
  4. :维也纳艺术博物馆(Museum)
  5. 维也纳
  6. :维也纳历史博物馆(Museum)

您可以像这样做,按所需顺序为每个索引添加提升:

{
"query": {
"bool": {
"must": {
"fuzzy": {
"name": "vienna"
}
},
"should": [
{
"term": {
"_index": {
"value": "cities",
"boost": 3
}
}
},
{
"term": {
"_index": {
"value": "sights",
"boost": 2
}
}
},
{
"term": {
"_index": {
"value": "museums",
"boost": 1
}
}
}
]
}
}
}

最新更新