DSL查詢ES結果分頁和搜尋關鍵字高亮顯示
阿新 • • 發佈:2021-11-10
1.分頁
elasticsearch 預設情況下只返回top10的資料。而如果要查詢更多資料就需要修改分頁引數了。elasticsearch中通過修改from、size引數來控制要返回的分頁結果:
-
from:從第幾個文件開始
-
size:總共查詢幾個文件
類似於mysql中的limit ?, ?
基本的分頁
分頁的基本語法如下:
GET/hotel/_search { "query":{ "match_all":{} }, "from":0,//分頁開始的位置,預設為0 "size":10,//期望獲取的文件總數 "sort":[ {"price":"asc"} ] }
預設查詢上限(from + size)是10000
什麼是高亮顯示呢?
我們在百度,京東搜尋時,關鍵字會變成紅色,比較醒目,這叫高亮顯示:
高亮顯示的實現分為兩步:
-
1)給文件中的所有關鍵字都新增一個標籤,例如
<em>
標籤 -
2)頁面給
<em>
標籤編寫CSS樣式
實現高亮
高亮的語法:
GET/hotel/_search { "query":{ "match":{ "FIELD":"TEXT" // 查詢條件,高亮一定要使用全文檢索查詢 } }, "highlight":{ "fields":{//指定要高亮的欄位 "FIELD":{ "pre_tags":"<em>",//用來標記高亮欄位的前置標籤 "post_tags":"</em>"//用來標記高亮欄位的後置標籤 } } } }
注意:
-
高亮是對關鍵字高亮,因此搜尋條件必須帶有關鍵字,而不能是範圍這樣的查詢。
-
預設情況下,高亮的欄位,必須與搜尋指定的欄位一致,否則無法高亮
-
如果要對非搜尋欄位高亮,則需要新增一個屬性:required_field_match=false
示例:
查詢的DSL是一個大的JSON物件,包含下列屬性:
-
query:查詢條件
-
from和size:分頁條件
-
sort:排序條件
-
highlight:高亮條件
示例: