zoukankan      html  css  js  c++  java
  • ElasticSearch(4)---Bulk批量操作

    在这里插入图片描述

    上一篇:ElasticSearch(3)—CURL操作

    1.Bulk的格式

    {action:{metadata}}
      //注意 “
    ”表示换行符
    {requstbody}
     (请求体)
    
    语法 描述
    action (行为),包含create(文档不存在时创建)、update(更新文档)、index(创建新文档或替换已用文档)、delete(删除一个文档)。
    metadata (行为操作的具体索引信息),需要指明数据的_index、_type、_id。

    create和index的区别:如果数据存在,使用create操作失败,会提示文档已存在,使用index则可以成功执行。

    示例:

    1. 批量插入

    现在有一个文件books.json中有需要批量写入的数据,该文件中的数据如下:

    {"index":{"_index":"books","_type":"info","_id":"1"}}
    {"name":"西游记","author":"吴承恩","price":"40"}
    {"index":{"_index":"books","_type":"info","_id":"2"}}
    {"name":"三国演义","author":"罗贯中","price":"41"}
    {"index":{"_index":"books","_type":"info","_id":"3"}}
    {"name":"水浒传","author":"施耐庵","price":"42"}
    {"index":{"_index":"books","_type":"info","_id":"4"}}
    {"name":"红楼梦","author":"曹雪芹","price":"43"} //注意:此处还需要点下回车键,否则会报错
    
    

    使用Xftp将此文件导入linux中的/home/zhangsan/data/目录下:
    在这里插入图片描述
    linux中输入下面的命令

    curl -H 'Content-Type:application/json' -XPOST 'http://120.76.217.14:9200/_bulk?pretty' --data-binary '@/home/zhangsan/data/books.json'
    

    然后查询索引:

    [zhangsan@tomcat-tst data]$ curl -XGET 'http://120.76.217.14:9200/books/info/_search?pretty'
    {
      "took" : 813,
      "timed_out" : false,
      "_shards" : {
        "total" : 1,
        "successful" : 1,
        "skipped" : 0,
        "failed" : 0
      },
      "hits" : {
        "total" : {
          "value" : 4,
          "relation" : "eq"
        },
        "max_score" : 1.0,
        "hits" : [
          {
            "_index" : "books",
            "_type" : "info",
            "_id" : "1",
            "_score" : 1.0,
            "_source" : {
              "name" : "西游记",
              "author" : "吴承恩",
              "price" : "40"
            }
          },
          {
            "_index" : "books",
            "_type" : "info",
            "_id" : "2",
            "_score" : 1.0,
            "_source" : {
              "name" : "三国演义",
              "author" : "罗贯中",
              "price" : "41"
            }
          },
          {
            "_index" : "books",
            "_type" : "info",
            "_id" : "3",
            "_score" : 1.0,
            "_source" : {
              "name" : "水浒传",
              "author" : "施耐庵",
              "price" : "42"
            }
          },
          {
            "_index" : "books",
            "_type" : "info",
            "_id" : "4",
            "_score" : 1.0,
            "_source" : {
              "name" : "红楼梦",
              "author" : "曹雪芹",
              "price" : "43"
            }
          }
        ]
      }
    }
    [zhangsan@tomcat-tst data]$
    

    批量写入成功,

    2. 批量处理

    {"update":{"_index":"books","_type":"info","_id":"1"}} //更新文档
    {"doc":{"name":"人性的弱点","author":"卡耐基"}} //请求体
    {"delete":{"_index":"books","_type":"info","_id":"2"}} //删除不需要请求体
    {"create":{"_index":"books","_type":"info","_id":"10"}} //当文档不存在的时候创建文档
    {"name":"孙子兵法","author":"孙武","price":"42"} //请求体
    {"index":{"_index":"books","_type":"info","_id":"3"}} //创建新文档或者替换已用文档
    {"name":"厚黑学","author":"李宗吾","price":"50"} //请求体
    
    

    以上是Bulk批量操作4中基本的action

    3. 批量处理的数据量

      因为Bulk操作会将要处理的数据导入到内存中,所以数据量的处理是有限的。能处理多少数据量取决于硬件配置、文档的大小以及复杂性、索引以及搜索负载。

      一般建议是1000-5000个文档,大小建议是5-15MB,默认不能超过100M,可以在es的配置文件(config下的elasticsearch.yml)中进行配置。

    4. 不重复指定/index/type

      在上面的批量操作文档的多个请求体中,都有同样的/books/info,我们可以在curlURL中指定/books/info,这样你仍然可以覆盖元数据行中的 _index 和 _type , 但是它将使用 URL 中的这些元数据值作为默认值:

    POST /books/info
    {"index":{"_id":"3"}} //创建新文档或者替换已用文档
    {"name":"厚黑学","author":"李宗吾","price":"50"} //请求体
    
    
    下一篇:ElasticSearch(5)—Head插件
  • 相关阅读:
    生成函数解决多重集合的计数问题
    kmp板子
    poj1001
    【题解】洛谷P1315 [NOIP2011TG] 观光公交(前缀和+贪心)
    【题解】洛谷P1941 [NOIP2014TG] 飞扬的小鸟(背包DP)
    【题解】洛谷P2679 [NOIP2015TG] 子串(DP+滚动数组)
    【题解】洛谷P1514 [NOIP2010TG] 引水入城(DFS+DP)
    【题解】洛谷P1052 [NOIP2005TG] 过河(DP+离散化)
    [arc063F]Snuke's Coloring 2-[线段树+观察]
    [agc001E]BBQ Hard[组合数性质+dp]
  • 原文地址:https://www.cnblogs.com/wgty/p/12810410.html
Copyright © 2011-2022 走看看