1. 程式人生 > 其它 >DSL查詢ES結果分頁和搜尋關鍵字高亮顯示

DSL查詢ES結果分頁和搜尋關鍵字高亮顯示

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

2.高亮顯示

什麼是高亮顯示呢?

我們在百度,京東搜尋時,關鍵字會變成紅色,比較醒目,這叫高亮顯示:

高亮顯示的實現分為兩步:

  • 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:高亮條件

示例: