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模塊便可。

相關文章
相關標籤/搜索