编辑配置文件conf/esdataconfig_deletedata.txt
[DELETEDATA]
index= business_chance
type = customer_num1
查询=
{
"query": {
"match_phrase": {
"province": "广东省"
}
}
}
end
index= business_index
type = customer_type
{
"query": {
"match_phrase": {
"province": "广东省"
}
}
}
end
说明:
[DELETEDATA] --------固定值
index=要删除记录所在索引
type =要删除记录所在类型
查询={……}仅更新满足查询条件的结果,不可为空
查询=
{
"query": {
"match_phrase": {
"province": "广东省"
}
}
}
end
这里的逻辑是这样的:如先“查询”,再对查询出来的每条记录(ES实际返回的记录)进行删除
其它说明同上
编辑配置文件conf/esdataconfig_deduplicatedata.txt
[DEDUPLICATEDATA]
index= business_index
type = customer_num2
查询=
{
"query": {
"match_phrase": {
"province": "广东省"
}
},
"size":100
}
end
type = customer_type
查询=
{
"query": {
"match_all": {}
},
"size": 100
}
end
index= business_chance
type = customer_num1
查询=
{
"query": {
"match_all": {}
},
"size": 100
}
end
注意:
这里的查询不能为空,一定要填写
这里的实现逻辑是这样的:先查询,然后删除查询出来的全部记录,最后再把不重复的记录写回到ES中。
其它说明同上
编辑配置文件conf/esdataconfig_copydata.txt
[COPYDATA]
index= business_chance
type = customer_num1
查询=
{
"query": {
"match_phrase": {
"province": "广东省"
}
}
}
end
type = customer_num2
查询=
{
"query": {
"match_phrase": {
"province": "广东省"
}
}
}
end
格式基本同上述的批量更新文档的配置,多少有点不一样,需要注意如下:
1) 这里的index,type分别为数据源所在的索引和类型,即需要从该索引和类型中复制数据到目标索引和类型,不能为空
index= business_chance
type = customer_num1
2)条件=配置需要“复制数据到”的目标索引,和目标类型,如下,以逗号分隔,一个条件仅仅支持一个目标index和type
条件 = index = business_index , type = customer_num2
end
条件和查询都不能为空。
这里的实现逻辑是这样的:对数据源所在的index, type通过“查询”得到要复制的数据,然后根据“条件”设置的目标索引和类型名,复制到对应目标主机上的目标索引,目标类型中。
说明:重复复制,会生成重复数据
如果觉得麻烦,以上几个数据配置的内容,可以写在一个文件里,但是必须按格式填写
cmd进入ESBatchOperator根目录(main.py所在目录)
python main.py
按提示,输入数字编号 1、2、3、4、5,回车运行
源码下载地址:基于Python实现的Elasticsearch批量操作客户端