我搜索了NEST文档,但似乎找不到合适的答案。 我的问题是如何使用NEST针对某个索引模式搜索多个索引?例如
如果我在Elasticsearch DB中具有以下名称的索引
media-2017-10, media-2018-03, media-2018-04
要指定我选择的索引,我需要使用通配符*,如下所示:
client.Search<Media>(s => s
.Index("media-*")
. query goes here .....
在NEST中可以吗?
答案 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 客户端文档中支持的任何模式。
注意 - 需要注意优化搜索,因为搜索您提供的所有索引可能需要一段时间。 (可以通过忽略非常旧的日期、限制结果等来实现优化...)