欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Elasticsearch(029):es中Meta-Fields(元数据类型)之概述(_index)

程序员文章站 2022-04-23 22:09:26
...

1. 概述

在多个索引中执行查询的时候,有时候需要添加子查询来关联特定的索引文档。_index字段可以匹配包含某个文档的索引。在term或terms查询,聚合,脚本以及排序的时候,可以访问_index字段的值。

注意:


_index是一个虚拟字段,不作为一个真实的字段添加到Lucene的索引中。这意味着可以在term或terms查询(任何可以重写term查询:如match.query_string,simple_query_string)中使用_index字段,但是不支持prefix、wildcard、regexp、fuzzy查询。

2. 示例

mappping定义和数据插入

PUT index_1
PUT index_1/docs/_mapping
{
    "properties":{
        "id":{"type": "long"},
        "title":{"type": "text"},
        "content":{"type": "text"}
    }
}
PUT index_1/docs/1
{
    "id": 1,
    "title": "Document title in index 1"
}

PUT index_2
PUT index_2/docs/_mapping
{
    "properties":{
        "id":{"type": "long"},
        "title":{"type": "text"},
        "content":{"type": "text"}
    }
}
PUT index_2/docs/1
{
    "id": 1,
    "title": "Document title 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']"
            }
        }
    }
}