索引属性

Index 索引属性 #

当跨多个索引进行查询时,您可能需要根据文档所在的索引来过滤结果。index 字段根据文档的索引来匹配文档。

以下示例创建两个索引,productscustomers,并向每个索引添加一个文档:

PUT products/_doc/1
{
  "name": "Widget X"
}

PUT customers/_doc/2
{
  "name": "John Doe"
}

然后,您可以查询这两个索引,并使用 _index 属性过滤结果,如以下示例请求所示:

GET products,customers/_search
{
  "query": {
    "terms": {
      "_index": ["products", "customers"]
    }
  },
  "aggs": {
    "index_groups": {
      "terms": {
        "field": "_index",
        "size": 10
      }
    }
  },
  "sort": [
    {
      "_index": {
        "order": "desc"
      }
    }
  ],
  "script_fields": {
    "index_name": {
      "script": {
        "lang": "painless",
        "source": "doc['_index'].value"
      }
    }
  }
}

在此示例中:

  • query 部分使用 terms 查询来匹配来自 productscustomers 索引的文档。
  • aggs 部分对 _index 字段执行 terms 聚合,按索引对结果进行分组。
  • sort 部分按 _index 字段以升序对结果进行排序。
  • script_fields 部分向搜索结果添加一个名为 index_name 的新字段,其中包含每个文档的 _index 字段值。

_index 字段上查询 #

_index 字段表示文档所在的索引。您可以在查询中使用此字段来过滤、聚合、排序或检索搜索结果的索引信息。

由于 _index 字段会自动添加到每个文档中,您可以像使用其他字段一样在查询中使用它。例如,您可以使用 terms 查询来匹配来自多个索引的文档。以下示例查询返回来自 productscustomers 索引的所有文档:

{
  "query": {
    "terms": {
      "_index": ["products", "customers"]
    }
  }
}
Edit 编辑本页