Elasticsearch

Elasticsearch 批量获取mget

2018-04-23  本文已影响4人  菜花_Q

Mget获取多个文档

介绍Multi GET API

为了更快更迅速的同时检索多个文档

mget API参数是一个docs数组,数组的每个节点定义一个文档的_index、_type、_id元数据

单个请求,会比较浪费网络资源,因为每次请求都需要建立连接

官方文档:Multi Get API | Elasticsearch Reference [6.2] | Elastic

举个例子:

curl 'http://localhost:9200/_mget' -d '{

    "docs":[

        {

        "_index":"shakespeare",

        "_type": "line",

        "_id": 6,

        "_source":"play_name"

        },

        {

        "_index":"shakespeare",

        "_type":"line",

        "_id": 28,

        "_source":"play_name"

        }

    ]

}'

#同时获取多个文档信息

#例子:获取index:bank和shakespeare西面

#ID为1,2,3,4,15,6,28的文档信息

GET /bank/bank_account/1

GET /bank/bank_account/2

GET /shakespeare/line/3

GET /bank/bank_account/4

GET /shakespeare/line/15

#数组 []

GET /_mget

{

    "docs":[

        {

            "_index": "bank",

            "_type":"bank_account",

            "_id":1

        },

        {

            "_index": "bank",

            "_type":"bank_account",

            "_id": 2

        },

        {

            "_index":"shakespeare",

            "_type":"line",

            "_id":3

        },

        {

            "_index": "shakespeare",

            "_type":"line",

            "_id":4

        },

        {

            "_index":"shakespeare",

            "_type": "line",

            "_id": 15

        },

        {

            "_index": "shakespeare",

            "_type": "line",

            "_id": 6

        },

        {

            "_index": "shakespeare",

            "_type": "line",

            "_id": 28

        }

    ]

}

#也可以指定_source字段,获取你想要的

GET /_mget

{

    "docs":[

        {

            "_index": "shakespeare",

            "_type":"line",

            "_id": '6'

            "_source": "play_name"

        },

        {

            "_index": "shakespeare",

            "_type":"line",

            "_id": 28,

            "_source": "play_name"

        }

    ]

}

#指定多个_source字段,数组的形式[]

GET /_mget

{

    "docs":[

    {

        "_index": "shakespeare",

        "_type": "line",

        "_id": 6

    },

    {

        "_index": "shakespeare",

        "_type": "line",

        "_id": 28,

        "_source":["play_name","speaker","text_entry"]

    }

    ]

}

#获取相同index相同type下不同ID的文档

GET /shakespeare/line/_mget

{

    "docs":[

        {"_id": 6},

        {"_type": "line","_id": 28}

    ]

}

#可以这样简便的写

GET /shakespeare/line/_mget

{

    "ids": ["6","28"]

}

GET /shakespeare/line/_mget

{

    "ids":["1","2","3","4","5","6","7"]

}

上一篇下一篇

猜你喜欢

热点阅读