1. 程式人生 > >分散式搜尋elasticsearch 搜尋結果排序不一致性問題

分散式搜尋elasticsearch 搜尋結果排序不一致性問題

想象這一種情況,如果搜尋結果中得分出現相同的情況下:由於搜尋會在分片的副本之間均衡的輪詢請求,可能會出現請求在不同的副本之間返回的循序不同,從而影響排序結果的穩定性。

搜尋介面有提供preference引數:curl localhost:9200/_search?preference=xyzabc123。

可以使用的引數: _primary,_primary_first,_local,_only_node:xyz,_prefer_node:xyz以及_shards:2,3這樣的值。

引數的意義分別如下:

 _primary:搜尋只在主分片執行搜尋請求,副本不參與搜尋;效能會打折扣,達不到效能的水平擴充套件。

_primary_first:優先在主分片執行,如果主分片掛掉,會在副本執行請求。

_local:搜尋請求優先於在本地執行。

_only_node:xyz:只在xyz節點執行搜尋。

_prefer_node:xyz:搜尋請求優先在節點xyz執行。

_shards:2,3:搜尋只在分片2、3執行,可以與_primary引數一起使用如:_shards:2,3;_primary

隨機字串:指定一個隨機字串,可以保證同樣的請求,被分配到同樣的副本上面,從而保證同一請求結果的穩定性。

參考:http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-preference.html