一、高亮的作用
ES高亮是一種在搜索結果中標識用戶查詢的關鍵詞的方法,此功能廣泛應用於搜索引擎和文本編輯器中。在搜索結果列表中,高亮文本可以幫助用戶快速找到相關的信息,提高搜索效率。在文本編輯器中,高亮文本可以幫助用戶識別不同的代碼語言,減少錯誤。
二、高亮實現的兩種方式
1. 基於欄位高亮
基於欄位高亮是指將搜索結果中匹配的關鍵詞標記,只標記匹配的欄位。可以通過設置欄位映射和搜索時指定搜索欄位來實現。
PUT my_index/_mapping { "properties": { "content": { "type": "text", "analyzer": "standard" } } } GET my_index/_search { "query": { "match": { "content": "es 高亮" } }, "highlight": { "fields": { "content": {} } } }
2. 基於查詢高亮
基於查詢高亮是指將搜索結果中匹配的關鍵詞標記,包括所有匹配的部分,不只是欄位中匹配的部分。可以通過在查詢中指定高亮選項來實現。
GET my_index/_search { "query": { "match": { "content": "es 高亮" } }, "highlight": { "require_field_match": false, "fields": { "content": {} } } }
三、高亮的配置選項
1. 簡單配置
可以使用默認的高亮選項,只需要在查詢中添加highlight欄位即可。
GET my_index/_search { "query": { "match": { "content": "es 高亮" } }, "highlight": {} }
2. 定製標記樣式
可以通過設置pre_tags和post_tags選項來定製標記的樣式。
GET my_index/_search { "query": { "match": { "content": "es 高亮" } }, "highlight": { "pre_tags": [""], "post_tags": [""], "fields": { "content": {} } } }
3. 控制標記數量
可以通過設置fragment_size和number_of_fragments選項來控制每個欄位的標記數量和標記的大小。
GET my_index/_search { "query": { "match": { "content": "es 高亮" } }, "highlight": { "fields": { "content": { "fragment_size": 100, "number_of_fragments": 3 } } } }
4. 針對不同欄位設置不同選項
可以為不同的欄位設置不同的高亮選項,只需要在highlight選項中指定每個欄位的配置。
GET my_index/_search { "query": { "match": { "content": "es 高亮" } }, "highlight": { "fields": { "title": {"pre_tags": [""], "post_tags": [""]}, "content": {"pre_tags": [""], "post_tags": [""], "number_of_fragments": 3} } } }
四、高亮的性能優化
1. 使用緩存
ES高亮對於大量數據或者複雜查詢非常消耗資源,可以通過禁用高亮緩存或者增加緩存大小來提高性能。
PUT my_index/_settings { "index.highlight.max_analyzed_offset": 1000000, "index.highlight.max_phrase_window": 500 }
2. 避免不必要的高亮
可以使用pre_tags和post_tags選項來避免對不必要的欄位進行高亮。
GET my_index/_search { "query": { "match": { "title": "es 高亮" } }, "highlight": { "fields": { "title": {"pre_tags": [], "post_tags": []}, "content": {"pre_tags": [""], "post_tags": [""], "number_of_fragments": 3} } } }
3. 壓縮標記文本
可以使用encoder選項來壓縮標記文本,減少網路傳輸的數據量。
GET my_index/_search { "query": { "match": { "content": "es 高亮" } }, "highlight": { "encoder": "html", "fields": { "content": {} } } }
五、總結
ES高亮是一種強大的搜索功能,可以幫助用戶快速找到相關信息。通過靈活的配置選項和性能優化,可以提高搜索效率和用戶體驗。
原創文章,作者:FESDF,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/334695.html