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

示例:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM