用python操作elasticsearch,你会吗?

一、基本查询

from elasticsearch import Elasticsearch

# 建立连接
es = Elasticsearch( 
    hosts={
   '192.168.0.120', '192.168.0.153'},  # 地址
    timeout=3600  # 超时时间
)

es.search(index='pv23')  # index:选择数据库

此方法是默认查询,由于没有任何筛选条件,会默认显示前10条数据的所有信息

二、filter_path

添加过滤路径。通过指定字段,只显示数据的指定字段信息(默认显示所有字段的信息)。

from elasticsearch import Elasticsearch

# 建立连接
es = Elasticsearch( 
    hosts={
   '192.168.0.120', '192.168.0.153'},  # 地址
    timeout=3600  # 超时时间
)

# 定义过滤字段,最终只显示此此段信息
filter_path=['hits.hits._source.ziduan1',  # 字段1
             'hits.hits._source.ziduan2']  # 字段2

es.search(index='pv71', filter_path=filter_path)  # 指定字段:filter_path

三、条件查询

通过制定body,进行条件查询。类似于mysql中的where。

1、切片查询

from elasticsearch import Elasticsearch

# 建立连接
es = Elasticsearch( 
    hosts={
   '192.168.0.120', '192.168.0.153'},  # 地址
    timeout=3600  # 超时时间
)

# body指定查询条件
body = {
   
    'from': 0,  # 从0开始
    'size': 20  
# 取20个数据。类似mysql中的limit 0, 20。 注:size可以在es.search中指定,也可以在此指定,默认是10
}

# 定义过滤字段,最终只显示此此段信息
filter_path=['hits.hits._source.ziduan1',  # 字段1
             'hits.hits._source.ziduan2']  # 字段2

es.search(index='pv23', filter_path=filter_path, body=body)  # 指定查询条件

2、match,模糊查询

body = {
   
    'query': {
     # 查询命令
        'match': {
     # 查询方法:模糊查询(会被分词)。比如此代码,会查到只包含:“我爱你”, “中国”的内容
            'ziduan1': '我爱你中国'
        }
    },
  'size': 20  # 不指定默认是10,最大值不超过10000(可以修改,但是同时会增加数据库压力)
}

# size的另一种指定方法
es.search(index='pv23', filter_path=filter_path, body=body, size=200)  # 指定size,默认是10

3、match_phrase,模糊查询

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群991032883
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
body = {
   
    'query': {
     # 查询命令
        'match_phrase': {
     # 查询方法:模糊查询(不会被分词)。会查到包含:“我爱你中国”的内容
            'ziduan1': '我爱你中国'
        }
    }
}

注:内容中的下划线,等标点符号会被忽略,有与没有的效果一样

4、term,精准单值查询

注:此方法只能查询一个字段,且只能指定一个值。类似于mysql中的where

ziduan=‘a’
body ={
      
    'query':{
   
        'term':{
   
            'ziduan1.keyword': '我爱你中国'  # 查询内容等于“我爱你中国的”的数据。查询中文,在字段后面需要加上.keyword
         # 'ziduan2': 'I love China'
        }
    }
}

5、terms,精准多值查询

#此方法只能查询一个字段,但可以同时指定多个值。类似于mysql中的where ziduan in (a, b,c...)
body ={
      
    "query":{
   
        "terms":{
   
            "ziduan1": ["我爱你中国", "I love China"]  # 查询ziduan1=a或=b...的数据
        }
    }
}
<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值