使用NEST针对某些索引模式搜索多个索引

时间:2019-02-21 10:19:41

标签: elasticsearch search wildcard nest elasticsearch-indices

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

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

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

要指定我选择的索引,我需要使用通配符*,如下所示:

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

在NEST中可以吗?

2 个答案:

答案 0 :(得分:0)

是的,这可行。尝试:)

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

答案 1 :(得分: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 客户端文档中支持的任何模式

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