利用kibana插件對Elasticsearch進行bool查詢
阿新 • • 發佈:2017-11-30
iba lds 建立 lte must itl post where 但是
#bool查詢
#老版本的filtered查詢已經被bool代替
#用 bool包括 must should must_not filter來完成 ,格式如下:
#bool:{
# "filter":[],
# "must":[],
# "should":[],
# "must_not"[],
#}
#must 數組內的所有查詢都必須滿足
#should 數組內只需要滿足一個
#must_not 一個都不能滿足
#建立測試數據
POST lagou/testdb/_bulk {"index":{"_id":1}} {"salary":10,"title":"python"} {"index":{"_id":2}} {"salary":20,"title":"Scrapy"} {"index":{"_id":3}} {"salary":30,"title":"Django"} {"index":{"_id":4}} {"salary":40,"title":"Elasticsearch"}
#簡單過濾查詢
#最簡單的fiter查詢
#select * from testdb where salary=20
#filter 薪資為20的工作
GET lagou/testdb/_search { "query":{ "bool": { "must":{"match_all":{} }, "filter": { "terms": { "salary": [20,10] } } } } }
#filter裏面也能寫多值查詢
#select * from testdb where title="python" GET lagou/testdb/_search { "query":{ "bool": { "must":{ "match_all":{} },"filter": { "term": { "title": "Python" } } } } }
#數據在入庫的時候就都已經進行大小寫處理了,所以現在用term查詢的時候是找不到需要的內容的,但是用match的時候就可以了
#查看分析器的解析結果
GET _analyze { "analyzer": "ik_max_word", "text":"python網絡" }
#bool過濾查詢,可以組合過濾查詢
# select * from testdb where (salary=20 OR title=Python) AND (salary != 30)
# 查詢薪資等於20k或者工作為python的工作,排除價格為30k的
GET lagou/testdb/_search { "query":{ "bool": { "should":[ {"term": {"salary": 20}}, {"term": {"title": "python"}} ], "must_not": [ {"term":{"salary":30}}, {"term":{"salary":10}} ] } } } x
#嵌套查詢
#select * from testdb where title="python" or ( title="django" AND salary=30)
GET lagou/testdb/_search { "query":{ "bool": { "should":[ {"term": {"title": "python"}}, {"bool": { "must": [ {"term": {"title": "django"}}, {"term": {"salary": 30}} ] }} ] } } }
#過濾空和非空
#建立測試數
#select tags from testdb2 where tags is not NULL
GET lagou/testdb2/_bulk {"index":{"_id":"1"}} {"tags":["salary"]} {"index":{"_id":"2"}} {"tags":["salary","python"]} {"index":{"_id":"3"}} {"other_fields":["some data"]} {"index":{"_id":"4"}} {"tags":null} {"index":{"_id":"5"}} {"tags":["salary",null]}
#處理null空值的方法
#select tags from testdb2 where tags is not NULL
GET lagou/testdb2/_search { "query": { "bool": { "must_not": { "exists": { "field": "tags" } } } } }
利用kibana插件對Elasticsearch進行bool查詢