Hello,World

使用helpers.bulk无法更新index数据

Elasticsearch | 作者 OneAtletico | 发布于2018年09月12日 | 阅读数:8690

Code:


actions = [ {
    '_index' : indexname,
    '_type' : projectname,
    '_id' : d['P']['R'],
    '_source' : d
}
for d in data_package
]
helpers.bulk(es, actions)


 Question:
  • 如果index本身不存在,可以正常创建index并插入数据。
  • 如果index本身存在,运行后不报错,但无法更新数据(ES/Kibana端未看到更新的数据)。
  • 指定_op_type为'update'后也是一样的结果,不报错但无法更新。

 
Remarks:
  • 数据量并不大,index中已有大概2000条数据,待更新量约700条。

已邀请:

JackGe

赞同来自:

我在https://elasticsearch-py.readt ... ample看到使用bulk写入数据的例子,区别是这里使用doc,您使用_source,不知道是不是elasticsearch-py版本不同导致的
def gendata():
mywords = ['foo', 'bar', 'baz']
for word in mywords:
yield {
"_index": "mywords",
"_type": "document",
"doc": {"word": word},
}

bulk(es, gendata())

 

laoyang360 - 《一本书讲透Elasticsearch》作者,Elastic认证工程师 [死磕Elasitcsearch]知识星球地址:http://t.cn/RmwM3N9;微信公众号:铭毅天下; 博客:https://elastic.blog.csdn.net

赞同来自:

bulk请求的时候,如果出错会有错误返回的。你可以根据错误结果进行进一步排查。
java的一次拍错如下:https://blog.csdn.net/laoyang3 ... 57798

zqc0512 - andy zhou

赞同来自:

python的是不是支持不是很好,你多找几个高版本的试下。
这玩意依赖ES接口太多。

medcl - 今晚打老虎。

赞同来自:

你看一下bulk 调用返回的内容是什么啊,错误都会告诉你的

xingpan - 90后it男

赞同来自:

我的es 6.5, 我的python elasticsearch包 是 elasticsearch==6.3.0我也遇到了,今天使用helpers.bulk,update 使用doc,使用_source 会报错。
 
            if isinstance(binlogevent, DeleteRowsEvent):
yield {
'_op_type':'delete',
'_source': es_data,
'_index': index_name,
'_type': '_doc',
'_id': id
}
elif isinstance(binlogevent, UpdateRowsEvent):
# print(es_data)
yield {
'_op_type':'update',
'doc': es_data,
'_index': index_name,
'_type': '_doc',
'_id':id
}

 
依然无法更新。
 
然后我采用了 bulk里面执行 yield delete  +  yield index,
                elif isinstance(binlogevent, UpdateRowsEvent):
# yield {
# '_op_type':'index',
# '_source': es_data,
# '_index': index_name,
# '_type': '_doc',
# '_id':id
# }
yield {
'_op_type':'delete',
'doc': es_data,
'_index': index_name,
'_type': '_doc',
'_id':id
}
print(es_data)
yield {
'_op_type':'index',
'_source': es_data,
'_index': index_name,
'_type': '_doc',
'_id':id
}

 
 
依然是原来的数据。
 
 
这里确认了mysql数据已经更新:
mysql> select accuser from  xcases_case where case_id='28b7fd635a30512636165d35ebf9fd4b';
+--------------------------------------------+
| accuser |
+--------------------------------------------+
| 石峰 尹行攀 中国 开发 great idea |
+--------------------------------------------+
1 row in set (2.64 sec)

再次确认了 
pymysqlreplication, update时候,打印了after_values数据。
 

{'id': '28b7fd635a30512636165d35ebf9fd4b', 'accused': '责任有限公司', 'accuser': '石峰 尹行攀 中国 开发 great idea ', 'case_id': '28b7fd635a30512636165d35ebf9fd4b', 'case_number': '(2016)辽0191民初1665', 'case_type': '普通案例', 'cause_name': '网络购物合同纠纷nihao', 'city_name': '沈阳市', 'court_name': '沈阳经济技术开发区人民法院厉害', 'decide_date': '2017-03-06', 'doc_type': '判决书', 'judicial_officers': '张雪 何海英 王英', 'province_name': '辽宁省', 'title': '石峰与北京京东叁佰陆拾度电子商务有限公司、深圳卡诗图科技有限公司网络购物合同纠纷一审民事判决书', 'trial_round': '一审', 'fulltext': [{'content': '辽宁省沈阳经济技术开发区人民法院\n民 事 判 决 书\n(2016)辽0191民初1665号', 'zh_tag': '开始'}, {'content': '原告:石峰,男,汉族。\n被告:北京京东叁佰陆拾度电子商务有限公司,住所地北京市北京经济技术开发区。\n法定代表人:刘强东,系该公司董事长。\n委托诉讼代理人:郭星,男,汉族,该公司工作人员。\n被告:深圳卡诗图科技有限公司,住所地深圳市龙岗区。\n法定代表人:张行。', 'zh_tag': '当事人信息'}, {'content': '原告石峰与被告北京京东叁佰陆拾度电子商务有限公司(以下简称京东公司)、深圳卡诗图科技有限公司(以下简称科技公司)网络购物合同纠纷一案,本院受理后,依法组成合议庭公开开庭进行了审理。原告石峰到庭参加诉讼,二被告经传票传唤,无正当理由拒不到庭参加诉讼,本院依法缺席审理,现已审理终结。', 'zh_tag': '审理经过'}, {'content': '原告向本院提出诉讼请求:1.被告退还原告货款1999元;2.被告赔偿原告3倍赔偿金5997元;3.诉讼费用由二被告承担。事实和理由:原告于2016年2月11日在被告京东商城网上交易平台“卡诗图数码专营店”购买了“华配商务精英款蓝牙智能手表”1部,单价1999元,共计花费1999元,订单号:12067539755,双方已形成了事实的买卖合同关系。原告购买后发现该商品是三无产品,并且没有手机入网许可证,不符合《中华人民共和国产品质量法》第二十七条规定和《电信设备进网管理办法》第三条关规定,侵害了原告的合法权益,故诉至法院。\n被告京东公司提交书面答辩状称,1.我公司作为网络交易平台提供者已经进到法定义务,不应承担赔偿责任,商家入驻平台前,对其主体资质、销售资质等进行了审核,也向法院提供了商家的信息、联系方式等。2.我公司在得知本案产品可能存在问题后,积极采取了必要措施,要求商家将该产品进行下架。3.本案产品不存在欺诈消费者情形,原告也不是消费者权益保护法所保护的对象,主张退货和三倍赔偿没有依据。综上,请求法院驳回原告的诉讼请求。', 'zh_tag': '原告诉称'}, {'content': '被告科技公司未作答辩。', 'zh_tag': '被告辩称'}, {'content': '原告围绕诉讼请求,依法提交了网上订单截图、实物照片等证据,根据当事人陈述和经审查确认的证据,本院认定事实如下:2016年2月11日,原告通过被告京东公司提供的网上交易平台在被告科技公司的“卡诗图数码专营店”购买了一部黑色的“华配商务精英款蓝牙智能手表”,金额为1999元,订单号:12067539755,在该商品的介绍中,该智能手表可作为手机使用,能插手机卡拨打电话。原告收到货物后发现该商品没有手机入网许可证。', 'zh_tag': '本院查明'}, {'content': '本院认为,根据我国民事诉讼法的规定,当事人有答辩并对对方当事人提交的证据进行质证的权利,本案二被告经本院合法传唤,无正当理由拒不出庭应诉,视为其放弃了答辩和质证的权利。消费者的合法权益受法律保护。在本案中,原告通过京东公司的网络平台与被告科技公司建立了买卖合同关系,被告科技公司应向原告提供合格的产品,不得作虚假宣传。但被告科技公司销售给原告的智能手表具有手机功能,却没有任何进网许可标志,不符合国家对电信设备必须粘贴进网许可的要求,其误导消费者的行为,已构成欺诈,根据《消费者权益保护法》的规定,被告科技公司应对原告购买的智能手表予以退货,返还货款,并按照价款的3倍予以赔偿损失。\n关于原告要求被告京东公司承担责任的诉讼请求,因被告京东公司作为提供服务的网络交易平台,其能够提供被告科技公司真实名称、地址和有效联系方式,也对被告科技公司进入其购物平台时的经营资质进行了审查,故原告要求被告京东公司承担责任,没有法律依据,本院不予支持。\n综上所述,依照《中华人民共和国消费者权益保护法》第四十四条、第五十五条第一款、《中华人民共和国民事诉讼法》第一百四十四条之规定,判决如下:', 'zh_tag': '本院认为'}, {'content': '一、被告深圳卡诗图科技有限公司于本判决生效后十日内对原告石峰购买的一部黑色“华配商务精英款蓝牙智能手表”(订单号为12067539755)予以退货,返还原告货款1999元;\n二、被告深圳卡诗图科技有限公司于本判决生效后十日内赔付原告石峰损失5997元(1999元×3);\n三、驳回原告其他诉讼请求;\n如果被告未按本判决指定的期间履行给付金钱义务,应当依照《中华人民共和国民事诉讼法》第二百五十三条之规定,加倍支付迟延履行期间的债务利息;\n案件受理费50元,由被告深圳卡诗图科技有限公司负担。\n如不服本判决,可在判决书送达之日起十五日内,向本院递交上诉状,并按对方当事人的人数提出副本,交纳上诉案件受理费,上诉于辽宁省沈阳市中级人民法院。如在上诉期满七日内未交纳上诉案件受理费,按自动撤回上诉处理。', 'zh_tag': '裁判结果'}, {'content': '审判长\u3000张\u3000雪\n审判员\u3000王\u3000英\n审判员\u3000何海英\n二〇一七年三月六日\n书记员\u3000赵明月\n本判决所适用的相关法律规定\n《中华人民共和国消费者权益保护法》第四十四条消费者通过网络交易平台购买商品或者接受服务,其合法权益受到损害的,可以向销售者或者服务者要求赔偿。网络交易平台提供者不能提供销售者或者服务者的真实名称、地址和有效联系方式的,消费者也可以向网络交易平台提供者要求赔偿;网络交易平台提供者作出更有利于消费者的承诺的,应当履行承诺。网络交易平台提供者赔偿后,有权向销售者或者服务者追偿。\n网络交易平台提供者明知或者应知销售者或者服务者利用其平台侵害消费者合法权益,未采取必要措施的,依法与该销售者或者服务者承担连带责任。\n第五十五条第一款经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或者接受服务的费用的三倍;增加赔偿的金额不足五百元的,为五百元。法律另有规定的,依照其规定。\n《中华人民共和国民事诉讼法》第一百四十四条被告经传票传唤,无正当理由拒不到庭的,或者未经法庭许可中途退庭的,可以缺席判决xingpan,hhhh。', 'zh_tag': '结束'}]}

查看es数据
GET xcase-aliase-yin/_search
{
"query": {"term": {"case_id":"28b7fd635a30512636165d35ebf9fd4b"

}}
}
{
"took" : 1,
"timed_out" : false,
"_shards" : {
"total" : 3,
"successful" : 3,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 1,
"max_score" : 7.6550117,
"hits" : [
{
"_index" : "xcases-v1-000089",
"_type" : "_doc",
"_id" : "28b7fd635a30512636165d35ebf9fd4b",
"_score" : 7.6550117,
"_source" : {
"id" : "28b7fd635a30512636165d35ebf9fd4b",
"accused" : "责任有限公司",
"accuser" : "石峰 尹行攀 中国",
"case_id" : "28b7fd635a30512636165d35ebf9fd4b",
"case_number" : "(2016)辽0191民初1665号",
"case_type" : "普通案例",
"cause_name" : "网络购物合同纠纷",
"city_name" : "沈阳市",
"court_name" : "沈阳经济技术开发区人民法院",
"decide_date" : "2017-03-06",
"doc_type" : "判决书",
"judicial_officers" : "张雪 何海英 王英",
"province_name" : "辽宁省",
"title" : "石峰与北京京东叁佰陆拾度电子商务有限公司、深圳卡诗图科技有限公司网络购物合同纠纷一审民事判决书",
"trial_round" : "一审",
"fulltext" : [

 
 
我知道es delete是标记删除,使用 delete + index 后,无法查询到数据, 加上index后,为何数据依然不变?
就有种”吃shi“一样的难受
 
 
 
 
 

要回复问题请先登录注册