创建索引以及添加数据
PUT test
{ "mappings" : { "properties" : { "test" :{ "type" : "nested" } }
} } GET test/_mappingPUT test/_doc/1
{ "test" :{ "name" : "ellis" ,"age" :100}
}
elasticsearch包
from elasticsearch import Elasticsearch
conn = Elasticsearch( hosts= [ '192.168.214.133' ] , port= 31200 , http_auth= "elastic:ellischen" ) update_by_query = { "query" : { "nested" : { "path" : "test" , "query" : { "term" : { "test.name" : { "value" : "ellis" } } } } } , "script" : { "source" : "ctx._source['test']['age']+=1" , "params" : { "age" : 101 } , "lang" : "painless" }
} conn. update_by_query( index= 'test' , body= update_by_query)
elasticsearch-dsl包
from elasticsearch_dsl import connections
from elasticsearch_dsl import Search
from elasticsearch_dsl import Q as esQ
from elasticsearch_dsl import UpdateByQuery
conn = connections. create_connection( hosts= [ '192.168.214.133' ] , port= 31200 , http_auth= "elastic:ellischen" )
source = "ctx._source['test']['age']=params.age"
params = { "age" : 110 }
query_body= esQ( 'nested' , ** { "path" : 'test' , "query" : esQ( 'term' , ** { "test.name" : { "value" : "ellis" } } ) } )
update_by_query = UpdateByQuery( ) . using( conn) . index( 'test' ) . query( query_body) . script( source= source, params= params) update_by_query. execute( )
from_dict 方法
from elasticsearch_dsl import connections
from elasticsearch_dsl import Search
from elasticsearch_dsl import Q as esQ
from elasticsearch_dsl import UpdateByQuery
conn = connections. create_connection( hosts= [ '192.168.214.133' ] , port= 31200 , http_auth= "elastic:ellischen" )
update_by_query = { "query" : { "nested" : { "path" : "test" , "query" : { "term" : { "test.name" : { "value" : "ellis" } } } } } , "script" : { "source" : "ctx._source['test']['age']+=1" , "params" : { "age" : 101 } , "lang" : "painless" }
}
search = UpdateByQuery( ) . from_dict( update_by_query) . using( conn) . index( 'test' )
search. execute( )