2

我搜索了 NEST 文档,但似乎找不到合适的答案。我的问题是如何使用 NEST 针对某些索引模式搜索多个索引?例如

如果我在 Elasticsearch DB 中有以下名称的索引

media-2017-10, media-2018-03, media-2018-04

为了指定我选择的索引,我需要像这样使用通配符 *:

client.Search<Media>(s => s
   .Index("media-*")
   . query goes here .....

NEST 有可能吗?

4

2 回答 2

1

是的,这行得通。试试看 :)

.Index(...)接受通配符索引

于 2019-02-21T11:53:52.583 回答
0

您也可以通过这种方式在多个索引中搜索:

var allIndices = new[] {
        "media-*",
        "docs-*",
        "common-*"           
    };

Nest.Indices allIndices = allIndices;
return _elasticClient
            .SearchAsync<EsBaseModel>(s => s
                .Index( allIndices)
                .Size(_esConfig.MaxCallIDsSize)
                .RequestConfiguration(r => r.RequestTimeout(TimeSpan.FromMinutes(5)))
                .Query(q =>
                    q.Match(m => m.Field("fieldname").Query(condition))                        
                ));

脚步:

只需创建一个带有字符串索引的数组。使用Nest 客户端文档中支持的任何模式,索引可以是显式或隐式的。

注意 - 需要注意优化搜索,因为搜索您提供的所有索引可能需要一段时间。(可以通过忽略非常旧的日期、限制结果等来实现优化……)

于 2021-05-30T13:46:38.970 回答