Elasticsearch基本查詢

2021-10-09 20:52:05 字數 3387 閱讀 3734

目錄

基本語法

查詢所有(match_all)

匹配查詢(match)

多欄位查詢(multi_match)

精確匹配(term)

多詞條精確匹配(terms)

結果過濾

直接指定字段

指定includes和excludes

布林組合查詢(bool)

must、must_not

should

filter

範圍查詢(range) 排序

單字段排序

多欄位排序 分頁

關鍵知識點總結

post /索引庫名/_search

}}

post shop/_search

}}

結果

,

"hits" :

},},

},},}]

}}

post /shop/_search

}}

match型別查詢,會把查詢條件進行分詞,然後進行查詢,多個詞條之間是or的關係,例如通過查詢條件為麒麟西瓜,分詞後與西瓜相關的記錄都會查到。

,

"hits" :

},},}]

}}

如果想使用match進行更精確的查詢,可以指定operator屬性為and:

post /shop/_search

}}}

結果:

,

"hits" : }]

}}

post /shop/_search

}}

結果:

,

"hits" : },}

]}}

term查詢被用於精確值匹配,這些精確值可能是數字、時間、布林或者那些未分詞的字串。

post /shop/_search

}}

結果:

,

"hits" : }]

}}

terms查詢和 term 查詢一樣,但它允許你指定多值進行匹配。如果這個字段包含了指定值中的任何乙個值,那麼這個文件滿足條件,類似於mysql的in。

post /shop/_search

}}

結果:

,

"hits" : },}

]}}

預設情況下,elasticsearch在搜尋的結果中,會把文件中儲存在_source的所有欄位都返回。如果我們只想獲取其中的部分字段,我們可以新增_source的過濾。

post /shop/_search

}}

結果:

,

"hits" : }]

}}

post /shop/_search

, "query":

}}

post /shop/_search

, "query":

}}

bool查詢包含四種操作符,分別是must,should,must_not,query。它們均是一種陣列,陣列裡面是對應的判斷條件。

post /shop/_search

},"must_not": }}

}}

結果:

,

"hits" : },}

]}}

should類似於or,只要有乙個條件滿足即可:

post /shop/_search

},}]

}}}

結果:

,

"hits" : },}

]}}

會查詢對結果進行快取,不會計算相關度,避免計算分值,執行速度非常快。

post /shop/_search}}

}}

結果:_score屬性為0

,

"hits" : }]

}}

range查詢找出那些落在指定區間內的數字或者時間。

range查詢允許以下字元:

操作符說明

gt大於

gte大於等於

lt小於

lte小於等於

post /shop/_search}}

}

結果:

,

"hits" : },}

]}}

post /shop/_search}},

"sort": [

}]}

結果:

,

"hits" : ,

"sort" : [

15.6]},

,"sort" : [

10.6]},

,"sort" : [

6.0]}]

}}

post /shop/_search}},

"sort": [},}

]}

post /shop/_search

},"size": 2,

"from": 0

}

結果:

,

"hits" : },}

]}}

term 查詢不會有分析器分析的過程,一般被用於精確值匹配,這些精確值可能是數字、時間、布林或者那些未分詞的字串;

must 為必須匹配,與and等價,貢獻算分,查詢時分數高的靠前;

must_not 為必須不匹配,與not等價,常過濾子句用,但不貢獻算分;

should 為選擇性匹配,至少滿足一條,與 or 等價,貢獻算分;

filter 為必須匹配,查詢過程忽略算分,直接過濾匹配的資料,結果會被快取,效率較高。

Elasticsearch 基本操作

mget elasticsearch中檢索多個文件,相對於乙個乙個的檢索,更快的方式是在乙個請求中使用multi get或者 mget api。具體應用如下 mget api引數是乙個 docs 陣列,陣列的每個節點定義乙個文件的 index type id 元資料。如果你只想檢索乙個或幾 個確定的...

elasticsearch基本操作

get search 建立索引 指定分片和副本 put lib 建立索引 put lib2 檢視索引的配置 get lib settings get lib2 settings get all settings 新增文件put方式指定id put lib user 1 新增文件,不指定id用post...

Elasticsearch 基本操作

乙個批量匯入elasticsearch 的demo 機器少的話,分片數最好是你的data節點的機器數倍數,這樣請求負載能夠均攤到每個機器上,如果機器比較多,最好保證分片數不要太多,比如最好別超過20 30個,然後根據你的資料量評估一下,盡量保證每個分片在15到20g吧 資料 vi request.j...