Elasticsearch学习系列之多文档操作mget
测试数据
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" ] } } ] }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步