批量創建數據
GET /lib4/items/_bulk {"index":{"_id":1}} {"price":40,"itemID":"ID100123"} {"index":{"_id":2}} {"price":50,"itemID":"ID100124"} {"index":{"_id":3}} {"price":25,"itemID":"ID100125"} {"index":{"_id":4}} {"price":30,"itemID":"ID100126"} {"index":{"_id":5}} {"price":null,"itemID":"ID100127"}
filter 不計算相關性,同時可以cache,因此filter的速度快於query
過濾查詢
GET /lib4/items/_search
{
"query":{ "bool":{ "filter":[ {"term": {"price":40} } ] } } }
text類型進行term查詢的問題
text類型數據,es默認會對此字段查詢使用分詞,
GET /lib4/items/_search
查不出數據 { "query":{ "bool":{ "filter":[ {"term": {"itemID":"ID100124"} } ] } } } 能查出數據 { "query":{ "bool":{ "filter":[ {"term": {"itemID":"id100124"} } ] } } }
bool 過濾查詢
{ "bool":{ "must":[], -- 必須滿足的條件--and "should":[],-- 可以滿足也可以不滿足的條件--or "must_not":[]-- 不能滿足的條件--not } }
bool查詢例子
GET /lib4/items/_search
{ "query":{ "bool":{ "should":[ {"term":{ "price":25 }}, {"term":{ "itemID":"id100123" }} ], "must_not":[ {"term":{ "price":40 }} ] } } }
范圍查詢,gt -- > , lt -- < , gte -- >= , lte -- <=
GET /lib4/items/_search { "query":{ "bool":{ "filter":{ "range":{ "price":{ "gt":25, "lt":50 } } } } } }
字段存在查詢
GET /lib4/items/_search { "query":{ "bool":{ "filter":{ "exists":{ "field":"price" } } } } }
只有filter的查詢,不評分
GET /lib4/items/_search { "query":{ "constant_score":{ "filter":{ "term":{ "price":30 } } } } }