Эластичный поиск - расставьте приоритеты индексов - PullRequest
0 голосов
/ 23 октября 2018

Допустим, у меня есть три индекса: города, музеи и достопримечательности.

Теперь я запрашиваю все индексы (_all) для термина, например, "Вена"

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

и как результат я получаю:

  1. Вена: Венский художественный музей (Museum)
  2. Вена: Венский исторический музей (Museum)
  3. Венский Ризенрад (Sight)
  4. Вена (cities)

Есть ли способ расставить приоритеты для индексов, чтобы я мог получить первые города, чем достопримечательности и последние музеи, что-то вроде этого:

  1. Вена (cities)
  2. Венский Ризенрад (Sight)
  3. Вена: Венский художественный музей (Museum)
  4. Вена: Венский исторический музей (Museum)

1 Ответ

0 голосов
/ 23 октября 2018

Вы можете сделать это следующим образом, добавив повышение для каждого индекса в нужном порядке:

{
  "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
            }
          }
        }
      ]
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...