elastic mget

Posted 一只宅男的自我修养

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了elastic mget相关的知识,希望对你有一定的参考价值。

转自:https://www.cnblogs.com/zhaijunming5/p/6424800.html

GET /library/books/1

复制代码
{
   "_index": "library",
   "_type": "books",
   "_id": "1",
   "_version": 1,
   "found": true,
   "_source": {
      "title": "Elasticsearch:the definitive guide",
      "name": {
         "first": "zachary",
         "last": "tong"
      },
      "publish_date": "2017-02-19",
      "price": "49.99"
   }
}
复制代码

GET /library/books/2

复制代码
{
   "_index": "library",
   "_type": "books",
   "_id": "2",
   "_version": 1,
   "found": true,
   "_source": {
      "title": "Elasticsearch:the definitive guide",
      "name": {
         "first": "zachary",
         "last": "tong"
      },
      "publish_date": "2017-02-19",
      "price": "59.99"
   }
}
复制代码

multi get

多字段查询可以设置多个文档查询条件,每个查询条件在结构上都比较类似

复制代码
GET /_mget
{
  
    "docs": [
      {
      "_index" : "library",
      "_type"  :  "books",
      "_id"    :  "1"
    },
    {
      "_index" : "library",
      "_type"  : "books",
      "_id"    : "2"
    }
    ]
  
  
}
复制代码

当然,在查询条件中,body中_index字段也可以放在查询字符串中

复制代码
GET /library/_mget
{
  
    "docs": [
      {
      
      "_type"  :  "books",
      "_id"    :  "1"
    },
    {
      
      "_type"  : "books",
      "_id"    : "2"
    }
    ]
  
  
}
复制代码

对于type也是一样:

复制代码
GET /library/books/_mget
{
  
    "docs": [
      {
      "_id"    :  "1"
    },
    {
      "_id"    : "2"
    }
    ]
}
复制代码

如果索引和类型都放在查询URL中,那么字段ID就可以放在一个数组中:

GET /library/books/_mget
{
  "ids" : ["1","2"]
}

如果想要查询不通类型的相同ID,就需要指定类型名称

复制代码
GET /test/_mget/
{
  "docs" : [
        {
            "_type":"typeA",
            "_id" : "1"
        },
        {
            "_type":"typeB",
            "_id" : "1"
        }
    ]
}
#这个例子不适用上面的测试数据
复制代码

Fields过滤

fields过滤是获取指定的字段

代码

复制代码
GET /_mget 
{
  "docs" : [
      {
        "_index":"library",
        "_type" : "books",
        "_id"   : "1",
        "fields" : ["publish_date","price"]
      },
      {
        "_index":"library",
        "_type" : "books",
        "_id"   : "2",
        "fields" : ["publish_date","price"]
      }
    ]
  
}
复制代码

结果

复制代码
{
   "docs": [
      {
         "_index": "library",
         "_type": "books",
         "_id": "1",
         "_version": 1,
         "found": true,
         "fields": {
            "publish_date": [
               "2017-02-19"
            ],
            "price": [
               "49.99"
            ]
         }
      },
      {
         "_index": "library",
         "_type": "books",
         "_id": "2",
         "_version": 1,
         "found": true,
         "fields": {
            "publish_date": [
               "2017-02-19"
            ],
            "price": [
               "59.99"
            ]
         }
      }
   ]
}

以上是关于elastic mget的主要内容,如果未能解决你的问题,请参考以下文章

ElasticSearch partial update+mget+bulk

7 批量查询mget批量修改bulk

如何使用mget命令指定目标路径

Elasticsearchelasticsearch里面的关于批量读取mget的用法

十一、Elasticsearch的mget/bulk相关命令

ELK 学习笔记之 elasticsearch Mget操作