Python操作es,python elastic
总结使用大蟒对于弹性搜索的常用操作
安装点安装弹性搜索
2.连接
从弹性搜索导入弹性搜索
es=弹性搜索([{ host : 49。232 .6 .227 ,端口:9200}],超时=3600)
# 添加验证
# http_auth=(肖, 123456 )es=弹性搜索([{ host : 49。232 .6 .227 , port:9200}],http_auth=http_auth,timeout=3600)
3.查询
1)全部查询
查询={
查询:{
match_all: {}
}
}
结果=es。搜索(index=account _ index,body=query)
对于结果[hits][hits]中的行:
打印(行)
2)期限过滤-期限主要用于精确匹配哪些值,比如数字,日期,布尔值或未分析的字符串(未经切词的文本数据类型)
查询={
查询:{
术语:{
"年龄":32岁
}
}
}
结果=es。搜索(index= mega corp ,body=query)
打印(结果)
#名字可能经过切词了
查询={
查询:{
术语:{
名字:简
}
}
}
结果=es。搜索(index= mega corp ,body=query)
打印(结果)
3)条款过滤-条款跟学期有点类似,但条款允许指定多个匹配条件。如果某个字段指定了多个值,那么文档需要一起去做匹配
查询={
查询:{
术语:{
名称:[111111 , 22222]
}
}
}
4) 查询文档中是否某个字段
查询={
查询:{
存在:{
字段:年龄
}
}
}
5) 布尔值
弯曲件过滤-合并多个过滤条件查询结果的布尔逻辑必须:多个查询条件的完全匹配,相当于还有。必须_不:多个查询条件的相反匹配,相当于不是。应该:至少有一个查询条件匹配,相当于或者。查询={
查询:{
bool: {
必须:{
term: {_score: 1.0},
term: {name: lanlang}
}
}
}
}
# 匹配名字为蓝浪并且没有年龄字段的记录查询={
查询:{
bool: {
必须:{
术语:{
姓名:兰朗
}
},
must_not :
存在:{
字段:年龄
}
}
}
}
}
6) 范围查找
gt:大于gte:大于等于lt:小于lte:小于等于查询={
查询:{
范围:{
年龄:
lt: 10
}
}
}
}
7)匹配标准查询
# 做精确匹配搜索时,你最好用过滤语句,因为过滤语句可以缓存数据。
#匹配查询只能就指定某个确切字段某个确切的值进行搜索,而你要做的就是为它指定正确的字段名以避免语法错误。
查询={
查询:{
匹配:{
关于:摇滚
}
}
}
8)多重匹配查询-匹配查询的基础上同时搜索多个字段,在多个字段中同时查一个
查询={
查询:{
多匹配:{
查询:兰朗,
字段:[姓名,妻子]
}
}
}
9)通配符查询-使用标准的壳通配符查询
查询={
查询:{
通配符:{
名称: lan*
}
}
}
10)正则表达式查询
查询={
查询:{
regexp: {
关于: .a.*
}
}
}
11)前缀以什么开头
查询={
查询:{
前缀:{
姓名:兰
}
}
}
12)短语匹配(短语匹配)寻找邻近的几个单词
查询={
查询:{
匹配短语:{
关于:我爱
}
}
}
13)统计查询
查询={
查询:{
匹配短语:{
关于:我爱
}
}
}
结果=es。count(index= mega corp ,body=query){count: 4, _shards: {total: 1,成功:1,跳过:0,失败:0}}
4.插入数据
1)不指定身份
# body={
# 姓名:兴,
# 年龄:9,
# 性别:0,
# 妻子:毛毛
# }
#结果=es。index(index=account _ index,body=body)2)指定身份
es.index(index=megacorp ,id=4,body={ 名字:肖,姓氏:吴,年龄:66,关于:我爱去攀岩,兴趣:[睡觉,吃饭]})
5.删除数据
1)指定身份删除
id=5DhJUHEBChSA6Z-1wbVW
ret=es.delete(索引=帐户_索引,id=id)
2)根据查询条件删除
查询={
查询:{
匹配:{
名字:肖
}
}
}
结果=es。delete _ by _ query(index= mega corp ,body=query)
6.更新
1)指定身份更新
id=5ThEVXEBChSA6Z-1OrVA
# 删除字段
doc_body={
脚本":" ctx ._source.remove(wife )
}
ret=es。更新(index=account _ index,id=id,body=doc_body)
打印(ret)#增加字段
doc_body={
脚本":" ctx ._source.address=合肥
}# 修改部分字段doc_body={
doc: {name: xing111}
}
2)满足条件进行更新
查询={
查询:{
匹配:{
姓氏:肖
}
},
脚本:{
源":" ctx ._ source。姓氏=参数。姓名;ctx ._source.age=params.age ,
郎:无痛,
params : {
姓名 :王:
年龄:100,
},
}
}
结果=es。update _ by _ query(index= mega corp ,body=query)
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。