gpt4 book ai didi

java - Elasticsearch 处理缺失索引

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:17:43 25 4
gpt4 key购买 nike

我想知道是否有一种方法可以指定我不介意搜索查询中的索引丢失或错误的 Elasticsearch 。换句话说,我有一个查询试图查询 7 个不同的索引,但根据情况,其中一个可能会丢失。我想知道的是,如果有办法说,忘记那个坏掉的,把其他6个指数的结果给我吧?

    SearchRequestBuilder builder = elasticsearchClient.getClient().prepareSearch(indices)
.setQuery(Query.buildQueryFrom(term1, term2))
.addAggregation(AggregationBuilders.terms('term')
.field('field')
.shardSize(shardSize)
.size(size)
.minDocCount(minCount));

作为示例查询,您可以找到上面的查询。

最佳答案

看看 ignore_unavailable 选项,它是 multi index syntax 的一部分.这至少从 1.3 版开始可用,并允许您在执行搜索(以及其他多索引操作)时忽略丢失或关闭的索引。

它通过 IndicesOptions 在 Java API 中公开。浏览源代码,我发现示例中使用的 SearchRequestBuilder 上有一个 setIndicesOptions() 方法。您需要将 IndicesOptions 的实例传递给它。

IndicesOptions 类上有各种静态工厂方法,用于使用您特定的所需选项构建实例。您可能会受益于使用更方便的 lenientExpandOpen() 工厂方法(或弃用版本 lenient(),具体取决于您的版本),它设置 ignore_unavailable= trueallow_no_indices=trueexpand_wildcards=open

这里是示例查询的修改版本,它应该提供您正在寻找的行为:

SearchRequestBuilder builder = elasticsearchClient.getClient().prepareSearch(indices)
.setQuery(Query.buildQueryFrom(term1, term2))
.addAggregation(AggregationBuilders.terms('term')
.field('field')
.shardSize(shardSize)
.size(size)
.minDocCount(minCount))
.setIndicesOptions(IndicesOptions.lenientExpandOpen());

关于java - Elasticsearch 处理缺失索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27482465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com