Elasticsearch 之 数据查询

1、查询语法

  • term--主要用于精确匹配哪些值,好比数字,日期,布尔值(不太适合字符串文字查询)
  • terms--跟 term 有点相似,但 terms 容许指定多个匹配条件。
  • q--简单的字符类查询
  • from,size--从哪一个结果开始返回(from),定义返回最大的结果数(size)
  • match--查询可接受文字、数字、日期等数据类型(multi_match为多字段查询)
  • filter--指定返回字段
  • desc,asc--降序(desc),升序(asc)
  • prefix 前缀匹配查询
  • range--范围查询(form,to)
  • wildcard--通配符查询,容许你使用通配符*和?进行匹配
  • fuzzy 模糊查询
  • more_like_this & more_like_this_field查询

2、查询例子

Elasticsearch 之 数据查询

3、term

#查询价格为148的书箱python

#Author Kang
from elasticsearch import Elasticsearch

es = Elasticsearch(['10.3.153.200:9200'])

query = {
    "query": {
        "term":{
            "price": 148
        }
    }
}

res = es.search(index='test',body=query)
print(res['hits']['hits'])

Elasticsearch 之 数据查询

4、terms

#获取价格为148与78的书箱
#Author Kang
from elasticsearch import Elasticsearch

es = Elasticsearch(['10.3.153.200:9200'])

query = {
    "query": {
        "terms":{
            "price": [148,78]
        }
    }
}

res = es.search(index='test',body=query)
print(res['hits']['hits'])

5、q

#查询title字段含有Python的书籍
#Author Kang
from elasticsearch import Elasticsearch

es = Elasticsearch(['10.3.153.200:9200'])

query = 'title:Python'

res = es.search(index='test',q=query)
print(res['hits']['hits'])

Elasticsearch 之 数据查询

6、from\size

#查询全部数据,从第1个数据开始,现示两个数据
#Author Kang
from elasticsearch import Elasticsearch

es = Elasticsearch(['10.3.153.200:9200'])

query = {
    "from": 1,
    "size": 2,
    "query":{"match_all":{}}
}

res = es.search(index='test',body=query)
print(res['hits']['hits'])

Elasticsearch 之 数据查询

7、match

#查询标题带有Elasticsearch字段
#Author Kang
from elasticsearch import Elasticsearch

es = Elasticsearch(['10.3.153.200:9200'])

query = {
    "query":{
        "match":{
            'title':"Elasticsearch"
        }
    }
}

res = es.search(index='test',body=query)
print(res['hits']['hits'])

Elasticsearch 之 数据查询
Elasticsearch 之 数据查询

8、filter

#只返回title字段的数据
Elasticsearch 之 数据查询curl

9、desc,asc

#对全部书籍价格进行降序
#Author Kang
from elasticsearch import Elasticsearch

es = Elasticsearch(['10.3.153.200:9200'])

query = {
    "sort":[
        {
            "price":{
                "order": "desc"
            }
        }
    ],
    "query":{"match_all":{}}
}

res = es.search(index='test',body=query)
print(res['hits']['hits'])

Elasticsearch 之 数据查询

10、range(form,to)

#查询书籍价格在30至70之间
#Author Kang
from elasticsearch import Elasticsearch

es = Elasticsearch(['10.3.153.200:9200'])

query = {
    "query":{
        "range":{
            "price":{
                "from": 30,
                "to": 70
            }
        }
    }
}

res = es.search(index='test',body=query)
print(res['hits']['hits'])

Elasticsearch 之 数据查询

11、wildcard

#查询Py开头的书籍名
#Author Kang
from elasticsearch import Elasticsearch

es = Elasticsearch(['10.3.153.200:9200'])

query = {
    "query":{
        "wildcard":{
            "title": "Py*"
        }
    }
}
res = es.search(index='test',body=query)
print(res['hits']['hits'])

Elasticsearch 之 数据查询
Elasticsearch 之 数据查询

备注:关于其它语法的查询,再也不一一说明,关于相关语法的学习方法,建议经过参考elasticsearch的官方curl方法,并把相关语法格式套用到python 的 elasticsearch模块便可。