资讯专栏INFORMATION COLUMN

elasticsearch的bulk操作

molyzzx / 3321人阅读

摘要:序本文主要记录如何用进行的操作。在将数据写入内存同时,会写一份日志,的时候,保持原样。是真正把刷回到磁盘,更新文件该文件用来记录索引中的所有时,清空的过程。这个的频率默认是分钟主动一次,或者大小大于时主动一次。

本文主要记录如何用curl进行es的bulk操作。

bulk请求 准备数据
vim documents.json
{ "index": {"_index": "library", "_type": "book", "_id": "1"}}
{ "title": "All Quiet on the Western Front","otitle": "Im Westen nichts Neues","author": "Erich Maria Remarque","year": 1929,"characters": ["Paul Bäumer", "Albert Kropp", "Haie Westhus", "Fredrich Müller", "Stanislaus Katczinsky", "Tjaden"],"tags": ["novel"],"copies": 1, "available": true, "section" : 3}
{ "index": {"_index": "library", "_type": "book", "_id": "2"}}
{ "title": "Catch-22","author": "Joseph Heller","year": 1961,"characters": ["John Yossarian", "Captain Aardvark", "Chaplain Tappman", "Colonel Cathcart", "Doctor Daneeka"],"tags": ["novel"],"copies": 6, "available" : false, "section" : 1}
{ "index": {"_index": "library", "_type": "book", "_id": "3"}}
{ "title": "The Complete Sherlock Holmes","author": "Arthur Conan Doyle","year": 1936,"characters": ["Sherlock Holmes","Dr. Watson", "G. Lestrade"],"tags": [],"copies": 0, "available" : false, "section" : 12}
{ "index": {"_index": "library", "_type": "book", "_id": "4"}}
{ "title": "Crime and Punishment","otitle": "Преступлéние и наказáние","author": "Fyodor Dostoevsky","year": 1886,"characters": ["Raskolnikov", "Sofia Semyonovna Marmeladova"],"tags": [],"copies": 0, "available" : true}
关闭refresh
curl -XPUT "192.168.99.100:9200/library -d "
{
    "settings":{
        "refresh_interval":"-1"
    }
}
"
发送请求
curl -s -XPOST "192.168.99.100:9200/_bulk" --data-binary @document.json
{"took":2603,"errors":false,"items":[{"index":{"_index":"library","_type":"book","_id":"1","_version":1,"_shards":{"total":2,"successful":1,"failed":0},"status":201}},{"index":{"_index":"library","_type":"book","_id":"2","_version":2,"_shards":{"total":2,"successful":2,"failed":0},"status":200}},{"index":{"_index":"library","_type":"book","_id":"3","_version":2,"_shards":{"total":2,"successful":2,"failed":0},"status":200}},{"index":{"_index":"library","_type":"book","_id":"4","_version":2,"_shards":{"total":2,"successful":2,"failed":0},"status":200}}]}%
refresh

更改回每隔1s将内存的segment刷回文件系统缓存

curl -XPUT "192.168.99.100:9200/library -d "
{
    "settings":{
        "refresh_interval":"1"
    }
}
"

或者再手动刷新一次

curl -XPOST "192.168.99.100:9200/_refresh
head插件安装
cd /usr/share/elasticsearch
./bin/plugin install mobz/elasticsearch-head

重启es

cd /etc/init.d
./elasticsearch restart

访问 http://192.168.99.100:9200/_plugin/head/

查询(注意这里跟curl不一样,是post方法)

{
    "query": {
        "query_string": {
            "query": "title:crime"
        }
    }
}

要返回版本信息的话:

{
    "version": true, 
    "query": {
        "query_string": {
            "query": "title:crime"
        }
    }
}

返回指定字段:

{
    "fields": ["title","year"], 
    "query": {
        "query_string": {
            "query": "title:crime"
        }
    }
}

关于flush

refresh只是将内存的segment刷回到文件系统缓存(刷到文件系统缓存中lucene就可以检索这个segment),还没有到磁盘。es在将数据写入内存buffer同时,会写一份translog日志,refresh的时候,translog保持原样。
flush是真正把segment刷回到磁盘,更新commit文件(该文件用来记录索引中的所有segment)时,translog清空的过程。这个flush的频率默认是30分钟主动flush一次,或者translog大小大于512M时主动flush一次。

参考

elasticsearch-bulk

elasticsearch-full-text-queries

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/34066.html

相关文章

  • Elasticsearch Java High Level REST Client(Bulk API

    摘要:异步执行还可以以异步方式执行,以便客户端可以直接返回,用户需要指定如何通过将请求和侦听器传递给异步块方法来处理响应或潜在故障要执行的和在执行完成时使用的。在每次执行之前和之后,或者当一个失败时,都会调用这个侦听器。 Bulk API Java High Level REST Client提供了Bulk处理器来帮助处理批量请求。 Bulk请求 BulkRequest可以使用一个请求执行多...

    Profeel 评论0 收藏0
  • Elasticsearch Java API 6.2(文档API)

    摘要:注意当一个文档在快照的时间和索引请求过程之间发生变化时,会发生版本冲突。当版本匹配时,更新文档并增加版本号。在正在运行的更新中,使用更改的值使用查找的值。值加快进程立即生效,减慢查询的值在完成当前批处理后生效,以防止滚动超时。 文档API 本节描述以下CRUD API: 单文档的API Index API Get API Delete API Update API 多文档API ...

    lykops 评论0 收藏0
  • Elasticsearch Java API 6.2(文档API)

    摘要:注意当一个文档在快照的时间和索引请求过程之间发生变化时,会发生版本冲突。当版本匹配时,更新文档并增加版本号。在正在运行的更新中,使用更改的值使用查找的值。值加快进程立即生效,减慢查询的值在完成当前批处理后生效,以防止滚动超时。 文档API 本节描述以下CRUD API: 单文档的API Index API Get API Delete API Update API 多文档API ...

    daryl 评论0 收藏0
  • elasticsearch学习笔记(二十)——Elasticsearch bulk api奇特js

    摘要:但是拿到这种标准格式的串之后,要按照下述流程去进行执行处理。假设一个场景,对于的大小一般建议在几千条,大小在左右,所以说,可怕的事情来了。占用更多的内存可能就会积压其它请求的内存使用量,比如说最重要的搜索请求,分析请求等等。 bulk api奇特的json格式 {action: {meta}}n{data}n{action: {meta}}n{data}n... 为什么bulk要采用这...

    godlong_X 评论0 收藏0
  • 《从0到1学习Flink》—— Flink 写入数据到 ElasticSearch

    摘要:从到学习介绍从到学习介绍其中包括了和的,后面我也讲了下如何自定义自己的和。这个问题可是线上很容易遇到的关注我转载请务必注明原创地址为微信公众号另外我自己整理了些的学习资料,目前已经全部放到微信公众号了。 showImg(https://segmentfault.com/img/remote/1460000017935460?w=1280&h=853); 前言 前面 FLink 的文章中...

    W4n9Hu1 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<