如何使用批量API通过使用Python将关键字存储在ES中 [英] How to use Bulk API to store the keywords in ES by using Python
问题描述
现在我尝试存储的消息是:
d = {message:这是消息 }
for range_nr in range(1,5):
ElasticSearchAPI.addToIndex(index_nr,d)
print d
这意味着如果我有10个消息,那么我必须重复我的代码10次。
所以我想做的是尝试制作脚本文件或批处理文件。
我检查ElasticSearch指南,BULK API是可以使用的。 http://www.elasticsearch.org/guide/en /elasticsearch/reference/current/docs-bulk.html
格式应该如下所示:
{field1:value1}
{delete:{_index:test,_type:type1,_id:2}}
{create:{_index:test _type:type1,_id:3}}
{field1:value3}
{update:{_id:1,_type :type1,_index:index1}}
{doc:{field2:value2}}
我所做的是:
{index:{_ index :test1,_ type:message,_ id:1}}
pre>
{message:it is red}
{index:{_ index :test2,_ type:message,_ id:2}}
{message:它是绿色}
我还使用curl工具来存储文档。
$ curl -s -XPOST localhost:9200 / _bulk --data-binary @ message.json
现在我想使用我的Python代码将文件存储到弹性搜索。
解决方案
from datetime import datetime
from elasticsearch import Elasticsearch
from elasticsearch import helpers
es = Elasticsearch()
actions = [
{
_index:ticket-index,
_type:ticket,
_id:j,
_source:{
any:data+ str(j),
timestamp:datetime.now()}
}
在范围(0,10)中的j
]
helpers.bulk(es,actions)
I have to store some message in ElasticSearch integrate with my python program. Now what I try to store the message is:
d={"message":"this is message"} for index_nr in range(1,5): ElasticSearchAPI.addToIndex(index_nr, d) print d
That means if I have 10 message then I have to repeat my code 10 times. So what I want to do is try to make a script file or batch file. I check ElasticSearch Guide, BULK API is possible to use. http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-bulk.html The format should be something like below:
{ "index" : { "_index" : "test", "_type" : "type1", "_id" : "1" } } { "field1" : "value1" } { "delete" : { "_index" : "test", "_type" : "type1", "_id" : "2" } } { "create" : { "_index" : "test", "_type" : "type1", "_id" : "3" } } { "field1" : "value3" } { "update" : {"_id" : "1", "_type" : "type1", "_index" : "index1"} } { "doc" : {"field2" : "value2"} }
what I did is:
{"index":{"_index":"test1","_type":"message","_id":"1"}} {"message":"it is red"} {"index":{"_index":"test2","_type":"message","_id":"2"}} {"message":"it is green"}
I also use curl tool to store the doc.
$ curl -s -XPOST localhost:9200/_bulk --data-binary @message.json
Now I want to use my Python code to store the file to the Elastic Search.
解决方案from datetime import datetime from elasticsearch import Elasticsearch from elasticsearch import helpers es = Elasticsearch() actions = [ { "_index": "tickets-index", "_type": "tickets", "_id": j, "_source": { "any":"data" + str(j), "timestamp": datetime.now()} } for j in range(0, 10) ] helpers.bulk(es, actions)
这篇关于如何使用批量API通过使用Python将关键字存储在ES中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!