Elasticsearch之批量操作bulk

摘要:
一般建议为1000-5000份文件。如果您的文档很大,可以适当减少队列。建议大小为5-15MB,默认情况下不能超过100M。它可以在es配置文件中。弹性搜索-。yml来修改值http。最大含量长度:100mbhttps://www.elastic.co/guide/en/elasticsearch/reference/2.4/modules-http.html批量操作批量示例,例如,在$ES_HOME中,创建一个名为request的新文件。

1、bulk相当于数据库里的bash操作。

2、引入批量操作bulk,提高工作效率,你想啊,一批一批添加与一条一条添加,谁快?

3、bulk API可以帮助我们同时执行多个请求

4、bulk的格式:

action:index/create/update/delete

metadata:_index,_type,_id

request body:_source (删除操作不需要加request body)

                   { action: { metadata }}

                   { request body        }

5、bulk里为什么不支持get呢?

  答:批量操作,里面放get操作,没啥用!所以,官方也不支持。

6、create 和index的区别

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

 7、bulk一次最大处理多少数据量?

  bulk会把将要处理的数据载入内存中,所以数据量是有限制的,最佳的数据量不是一个确定的数值,它取决于你的硬件,你的文档大小以及复杂性,你的索引以及搜索的负载。

  一般建议是1000-5000个文档,如果你的文档很大,可以适当减少队列,大小建议是5-15MB,默认不能超过100M,可以在es的配置文件(即$ES_HOME下的config下的elasticsearch.yml)中。

elasticsearch-.yml(中文配置详解)

  来修改这个值http.max_content_length: 100mb【不建议修改,太大的话bulk也会慢】,

https://www.elastic.co/guide/en/elasticsearch/reference/2.4/modules-http.html

 Elasticsearch之批量操作bulk第1张

批量操作bulk例子

 (1) 比如,我这里,在$ES_HOME里,新建一文件,命名为request。(这里为什么命名为request,去看官网就是)在Linux里,有无后缀没区别。

Elasticsearch之批量操作bulk第2张

Elasticsearch之批量操作bulk第3张

[hadoop@djt002 elasticsearch-2.4.3]$ pwd
/usr/local/elasticsearch/elasticsearch-2.4.3
[hadoop@djt002 elasticsearch-2.4.3]$ ll
total 56
drwxrwxr-x. 2 hadoop hadoop 4096 Feb 20 22:54 bin
drwxrwxr-x. 3 hadoop hadoop 4096 Feb 21 01:28 config
drwxrwxr-x. 3 hadoop hadoop 4096 Feb 20 22:59 data
drwxrwxr-x. 2 hadoop hadoop 4096 Feb 20 22:54 lib
-rw-rw-r--. 1 hadoop hadoop 11358 Aug 24 00:46 LICENSE.txt
drwxrwxr-x. 2 hadoop hadoop 4096 Feb 21 00:33 logs
drwxrwxr-x. 5 hadoop hadoop 4096 Dec 8 00:41 modules
-rw-rw-r--. 1 hadoop hadoop 150 Aug 24 00:46 NOTICE.txt
drwxrwxr-x. 2 hadoop hadoop 4096 Feb 20 22:59 plugins
-rw-rw-r--. 1 hadoop hadoop 8700 Aug 24 00:46 README.textile
[hadoop@djt002 elasticsearch-2.4.3]$ vim request
[hadoop@djt002 elasticsearch-2.4.3]$ more request
{"index":{"_index":"zhouls","_type":"emp","_id":"10"}}
{ "name":"jack", "age" :18}
{"index":{"_index":"zhouls","_type":"emp","_id":"11"}}
{"name":"tom", "age":27}
{"update":{"_index":"zhouls","_type":"emp", "_id":"2"}}
{"doc":{"age" :22}}
{"delete":{"_index":"zhouls","_type":"emp","_id":"1"}}
[hadoop@djt002 elasticsearch-2.4.3]$

或者

{ "index" : {"_index":"zhouls","_type":"emp","_id":"21"}}

{ "name" : "test21"}

例子:

{ "index" : { "_index" : "zhouls", "_type" : "type1", "_id" : "1" } }

{ "field1" : "value1" }

{ "index" : { "_index" : "zhouls", "_type" : "type1", "_id" : "2" } }

{ "field1" : "value1" }

{ "delete" : { "_index" : "zhouls", "_type" : "type1", "_id" : "2" } }          (删除操作不需要加request body)      

{ "create" : { "_index" : "zhouls", "_type" : "type1", "_id" : "3" } }

{ "field1" : "value3" }

{ "update" : {"_index" : "zhouls", "_type" : "type1","_id" : "1" } }

{ "doc" : {"field2" : "value2"} }

(2)使用文件的方式

  vi requests 

写入批量操作语句。比如,下面

{"index":{"_index":"zhouls","_type":"emp","_id":"10"}}
{ "name":"jack", "age" :18}
{"index":{"_index":"zhouls","_type":"emp","_id":"11"}}
{"name":"tom", "age":27}
{"update":{"_index":"zhouls","_type":"emp", "_id":"2"}}
{"doc":{"age" :22}}
{"delete":{"_index":"zhouls","_type":"emp","_id":"1"}}

  在$ES_HOME目录下,执行下面命令

  curl  -PUT  '192.168.80.200:9200/_bulk'   --data-binary @request;

   curl  -XPOST  '192.168.80.200:9200/_bulk'   --data-binary @request;

Elasticsearch之批量操作bulk第4张

[hadoop@djt002 elasticsearch-2.4.3]$ curl -PUT '192.168.80.200:9200/_bulk' --data-binary @request;
{"took":123,"errors":true,"items":[{"index":{"_index":"zhouls","_type":"emp","_id":"10","_version":1,"_shards":{"total":2,"successful":1,"failed":0},"status":201}},{"index":{"_index":"zhouls","_type":"emp","_id":"11","_version":1,"_shards":{"total":2,"successful":1,"failed":0},"status":201}},{"update":{"_index":"zhouls","_type":"emp","_id":"2","status":404,"error":{"type":"document_missing_exception","reason":"[emp][2]: document missing","index":"zhouls","shard":"-1"}}},{"delete":{"_index":"zhouls","_type":"emp","_id":"1","_version":1,"_shards":{"total":2,"successful":1,"failed":0},"status":404,"found":false}}]}[hadoop@djt002 elasticsearch-2.4.3]$

之后,再查看下。

[hadoop@djt002 elasticsearch-2.4.3]$ curl -XGET 'http://192.168.80.200:9200/zhouls/emp/1?pretty'
{
"_index" : "zhouls",
"_type" : "emp",
"_id" : "1",
"found" : false
}
[hadoop@djt002 elasticsearch-2.4.3]$ curl -XGET 'http://192.168.80.200:9200/zhouls/emp/2?pretty'
{
"_index" : "zhouls",
"_type" : "emp",
"_id" : "2",
"found" : false
}
[hadoop@djt002 elasticsearch-2.4.3]$ curl -XGET 'http://192.168.80.200:9200/zhouls/emp/11?pretty'
{
"_index" : "zhouls",
"_type" : "emp",
"_id" : "11",
"_version" : 4,
"found" : true,
"_source" : {
"name" : "tom",
"age" : 27
}
}

[hadoop@djt002 elasticsearch-2.4.3]$ curl -XGET 'http://192.168.80.200:9200/zhouls/emp/10?pretty'
{
"_index" : "zhouls",
"_type" : "emp",
"_id" : "10",
"_version" : 4,
"found" : true,
"_source" : {
"name" : "jack",
"age" : 18
}
}

  (3) bulk请求可以在URL中声明/_index 或者/_index/_type

  这个,自行去测试!

官网

https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html

Elasticsearch之批量操作bulk第5张

免责声明:文章转载自《Elasticsearch之批量操作bulk》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇LVM 扩容、删除redis中的key的复制下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

大数据 Hadoop 单机版安装

1. 安装 JDK tar -zvxf jdk-8u201-linux-x64.tar.gz -C /opt/software cd /opt/software mv jdk1.8.0_201 jdk vim /etc/profile export JAVA_HOME=/opt/software/jdk export PATH=$JAVA_HOME/b...

hadoop安装笔记

 最近在学习hadoop,hadoop的安装过程如下 我选用的是ubuntu 14桌面版+hadoop3.1.1。 1,ubuntu的安装   需要准备的有:ubuntu镜像文件,VMware虚拟机   首先我们需要linux系统,但是由于平时大家基本都是使用windows系统,而且hadoop集群又需要多个节点,所以我们需要使用虚拟机,这里选用的是VM ...

hadoop不同版本有哪些

一、Hadoop是什么? 首次听到hadoop这次单词,相信很多人跟我当时是一样,不免心中画上一个大大的问号——这是什么东西?Hadoop是什么?百度百科的解释是:Hadoop是一个由Apache基金会所开发的分布式系统基础架构。换句话说就是hadoop是一个能够对大量数据进行分布式处理的软件框架。 Hadoopd之所谓会诞生,主要是由于进入到大数据时代,...

十四、ES开启密码认证

一、为什么要用安全认证 每个人都能使用es-head插件跟kibana查看和修改es数据库,这是十分危险的。 所以需要给es-head和kibana添加密码认证。 二、环境准备 主机名 服务 IP es01 es+kibana 10.154.0.110 es02 es 10.154.0.111 我这使用的环境是两台es服务器,其中es0...

yarn上运行flink环境搭建

主要完成hadoop集群搭建和yarn上运行flink 1.搭建hadoop伪集群 主要是搭建hadoop MapReduce(yarn)和HDFS 1.1 下载&配置环境变量 这里下载的hadoop二进制包为 2.7.7,下载后解压到本地,假设是/usr/hadoop/hadoop-2.7.7 #HADOOP VARIABLES START e...

elasticsearch 性能优化

转载: https://www.cnblogs.com/jajian/p/10465519.html 硬件选择 Elasticsearch(后文简称 ES)的基础是 Lucene,所有的索引和文档数据是存储在本地的磁盘中,具体的路径可在 ES 的配置文件../config/elasticsearch.yml中配置,如下: # ---------------...