2016-04-14 2 views
0

Можно ли написать условный фильтр в многоиндексном запросе Elasticsearch?Фильтрация по нескольким индексам с использованием ElasticSearch

Я смотрю скрипт фильтра, но я не вижу нигде в документации, если индекс документов является переменной, которую я могу проверить?

Мой существующий запрос выглядит так, обратите внимание, что сценарий фильтра не работает, но я предполагаю, что это то, где мне нужно выполнить мой запрос.

{ 
    "index": "tweets,articles,animals,buildings", 
    "type": "item", 
    "body": { 
     "query": { 
      "multi_match": { 
       "query": "cat", 
       "type": "phrase_prefix", 
       "fields": [ 
        "label", 
        "body" 
       ] 
      } 
     }, 
     "filter": { 
      "script": { 
       "script": "if (_index == \"animals\") {return true;} else {return false} 
      } 
     }, 
     "from": 0, 
     "size": 8 
    } 
} 

Очевидно, что я хотел бы сделать больше в этом фильтре, чем просто исключить элементы из определенного индекса, это просто пример.

+0

какая версия elasticsearch? – keety

+0

2.1.1 в настоящее время, но при необходимости можно обновить? – HelloPablo

ответ

3

Чтобы решить эту проблему, вы должны объединить несколько indices query.

+0

'indices query' устарел в 5.0. Но вы можете фильтровать поле '_index', как и любое другое поле. '{" term ": {" _index ":" animals "}}' –

Смежные вопросы