When performing queries across multiple indexes, it is sometimes desirable to
add query clauses that are associated with documents of only certain indexes.
The _index
field allows matching on the index a document was indexed into.
Its value is accessible in term
, or terms
queries, aggregations,
scripts, and when sorting:
The _index
is exposed as a virtual field — it is not added to the
Lucene index as a real field. This means that you can use the _index
field
in a term
or terms
query (or any query that is rewritten to a term
query, such as the match
, query_string
or simple_query_string
query),
but it does not support prefix
, wildcard
, regexp
, or fuzzy
queries.
# Example documents PUT index_1/_doc/1 { "text": "Document in index 1" } PUT index_2/_doc/2?refresh=true { "text": "Document in index 2" } GET index_1,index_2/_search { "query": { "terms": { "_index": ["index_1", "index_2"] } }, "aggs": { "indices": { "terms": { "field": "_index", "size": 10 } } }, "sort": [ { "_index": { "order": "asc" } } ], "script_fields": { "index_name": { "script": { "lang": "painless", "source": "doc['_index']" } } } }