_index 字段
编辑_index
字段编辑
在跨多个索引执行查询时,有时需要添加与特定索引的文档相关的查询子句。 _index
字段允许匹配文档索引的索引。它的值可以在某些查询和聚合中访问,以及在排序或脚本中访问。
response = client.index( index: 'index_1', id: 1, body: { text: 'Document in index 1' } ) puts response response = client.index( index: 'index_2', id: 2, refresh: true, body: { text: 'Document in index 2' } ) puts response response = client.search( index: 'index_1,index_2', body: { query: { terms: { _index: [ 'index_1', 'index_2' ] } }, aggregations: { indices: { terms: { field: '_index', size: 10 } } }, sort: [ { _index: { order: 'asc' } } ], script_fields: { index_name: { script: { lang: 'painless', source: "doc['_index']" } } } } ) puts response
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']" } } } }
_index
字段是虚拟暴露的,它不会作为真实字段添加到 Lucene 索引中。这意味着您可以在 term
或 terms
查询(或任何被重写为 term
查询的查询,例如 match
、query_string
或 simple_query_string
查询)中使用 _index
字段,以及 prefix
和 wildcard
查询。但是,它不支持 regexp
和 fuzzy
查询。
对 _index
字段的查询除了具体的索引名称外,还接受索引别名。
当指定远程索引名称(例如 cluster_1:index_3
)时,查询必须包含分隔符字符 :
。例如,对 cluster_*:index_3
的 wildcard
查询将匹配来自远程索引的文档。但是,对 cluster*index_1
的查询只匹配本地索引,因为没有分隔符。此行为与远程索引名称的通常解析规则一致。