我们将Spring Data Elasticsearch与地理位置分布的节点(和副本)结合使用。我们希望最大限度地减少跨越边界的查询流量,并让所有查询都在本地'节点。无论如何都要在全球范围内强制推广?除了将所有内容切换为本机查询并丢弃所有存储库等之外,似乎没有办法强迫它。
答案 0 :(得分:1)
我最终修改了Spring Data Elasticsearch的ElasticsearchTemplate类,并添加了以下行:
private SearchRequestBuilder prepareSearch(Query query) {
//...
searchRequestBuilder.setPreference("_local");
logger.info("----- using shadow patched ElasticsearchTemplate so queries/searches prefer local node -----");
return searchRequestBuilder;
}
答案 1 :(得分:0)
无需修补ElasticsearchTemplate,我已在上一个Spring Data Elasticsearch 3.2中对其进行了修复
NativeSearchQuery searchQueryWithValidPreference = new NativeSearchQueryBuilder().withQuery(matchAllQuery())
.withPreference("_local").build();