zoukankan      html  css  js  c++  java
  • ElasticSearch基础之批量操作(mget+mbulk)

        在前面的演示中,我们都是基于一次http查询,每次查询都要建立http的三次握手请求,这样比较耗费性能!因此ES给我们提供了基本的批量查询功能,例如如下的查询,注意里面的index是可以任意指明的,不需要都一致

    【01】批量查询之_mget操作,如下查询表示指定同时查询索引testdb下的两个type(job1和job2)里面的数据:注意我们可以在这里指定不同的索引,例如testdb1,testdb2;另外这里要指定doc关键词,表示我查询的是一个文档:

    【02】查询同一个index下面不同type的数据,我们直接在url地址中先指明index为testdb,然后在里面就不用指明了:

    【03】如果连type都是一样的,那就只需要查询id了,依然不要忘记使用doc关键词

    我们还可以基于上面的情形继续简写,下面这种写法就更加简便了

     

    需要注意的是:上面使用docs指定时,它对应的value是一个数组,数组里面的每个元素都是字典。

    【04】ES的bulk批量操作 来看看网络上的一张截图:

    相当于就是使用了元数据来完成数据的批量导入,每导入一条数据,由两行构成,一条是元信息,另一条是数据行,来看看笔者实际的例子:

    注意上面的数据格式一定要做成一行,不要优化成json数据格式

     示例1:使用POST来完成bulk操作演示:蓝色的为元数据信息:

    {"index":{"_index": "lagou", "_type": "job", "_id":"1"}}
    {"title": "python爬虫开发工程师","salary_min": 15000,"city": "北京","company":{"name": "百度","company_adr": "北京市软件园3栋"},"publish_date": "2017-4-16","comments":14}
    {"index":{"_index": "lagou", "_type": "job2", "_id":"2"}}
    {"title": "python django开发工程师","salary_min": 30000,"city": "成都","company":{"name": "","company_adr": "杭州软件园3栋"},"publish_date": "2017-4-16","comments":55}

    运行截图如下所示:记住在上面使用POST _bulk

     我们去head插件中看看,可以看到它自动为我们创建了所以index,而且还插入了两条数据:

     

    注意事项:

    关于bulk操作的解说:
    1.第一行是操作,例如index操作,后面的value是元数据,指明index操作是针对哪个索引,哪个type,哪个id进行的;
    2.第二行才是数据
    
    但是要注意的是delete操作只有一行数据,因为只需要提供一个id即可
    
    下面的create操作和update操作都是两行数据。

    示例如下:

  • 相关阅读:
    关于Java常见的误解
    Java程序设计概述
    是结束,更是开始!
    从零开始单排学设计模式「简单工厂设计模式」黑铁 III
    某神秘公司 RESTful、共用接口、前后端分离、接口约定的实践
    这40张图送给单身程序员,情人节请一笑而过!
    科技圈晒开工福利!2019一起定个小目标!
    IDEA一定要懂的32条快捷键
    假期结束了,我相信未来会更好!
    有一种痛,叫 “今年没有年终奖”!!!
  • 原文地址:https://www.cnblogs.com/pyspark/p/8717300.html
Copyright © 2011-2022 走看看