0
votes

Let's say I have three indices: cities, museums and sights.

Now I am querying on all indices (_all) for a term, for example "Vienna"

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

and as results I get:

  1. Vienna: Vienna Art Museum (Museum)
  2. Vienna: Vienna History Museum (Museum)
  3. Vienna's Riesenrad (Sight)
  4. Vienna (cities)

Is there a way to prioritize the indices, so that I get first cities, than sights and last the museums, something like this:

  1. Vienna (cities)
  2. Vienna's Riesenrad (Sight)
  3. Vienna: Vienna Art Museum (Museum)
  4. Vienna: Vienna History Museum (Museum)
1

1 Answers

0
votes

You can do it like this, by adding a boost for each index in the desired order:

{
  "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
            }
          }
        }
      ]
    }
  }
}