1. 程式人生 > >ElasticSearch最佳入門實踐(五十八)搜尋相關引數梳理以及bouncing results問題解決方案

ElasticSearch最佳入門實踐(五十八)搜尋相關引數梳理以及bouncing results問題解決方案

1、preference

決定了哪些shard會被用來執行搜尋操作

_primary, _primary_first, _local, _only_node:xyz, _prefer_node:xyz, _shards:2,3

bouncing results問題,兩個document排序,field值相同;不同的shard上,可能排序不同;每次請求輪詢打到不同的replica shard上;每次頁面上看到的搜尋結果的排序都不一樣。這就是bouncing result,也就是跳躍的結果。

搜尋的時候,是輪詢將搜尋請求傳送到每一個replica shard(primary shard),但是在不同的shard上,可能document的排序不同

解決方案就是將preference設定為一個字串,比如說user_id,讓每個user每次搜尋的時候,都使用同一個replica shard去執行,就不會看到bouncing results了

2、timeout

主要就是限定在一定時間內,將部分獲取到的資料直接返回,避免查詢耗時過長

3、routing

document文件路由,_id路由,routing=user_id,這樣的話可以讓同一個user對應的資料到一個shard上去

4、search_type

default:query_then_fetch
dfs_query_then_fetch,可以提升revelance sort精準度