Elasticsearch w / Spring Data - _local搜索首选项

时间:2017-06-22 17:05:17

标签: spring elasticsearch spring-data spring-data-elasticsearch

我们将Spring Data Elasticsearch与地理位置分布的节点(和副本)结合使用。我们希望最大限度地减少跨越边界的查询流量,并让所有查询都在本地'节点。无论如何都要在全球范围内强制推广?除了将所有内容切换为本机查询并丢弃所有存储库等之外,似乎没有办法强迫它。

2 个答案:

答案 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();