Python操作es,python elastic

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: