我的 ElasticSearch 中有两个索引,我们将它们命名为“受信任”和“不受信任”。两个索引具有相同的模板/字段/设置。
基于某些标志,我对一个或两个索引执行 NEST 查询。
var indices = request.IncludeUntrustedSources
? new[] {"trusted", "untrusted"}
: new[] {"trusted"};
var searchResponse = await _client.SearchAsync<SearchResultItem>(c => c
.Query(q => q.Bool(_ => query))
.Index(indices)
.Sort(ss => ss
.Descending(SortSpecialField.Score))
.From(skip)
.Size(perPage)
SearchResultItem 类型是一个简单的 POCO。我想根据源索引将 SearchResultItem 的“TrustedSource”字段的值设置为 true 或 false。
我如何了解每个项目来自哪个索引?
您可以从
searchResponse.Documents
获取结果,而不是从 searchResponse.Hits
获取匹配的文档,其中还包含 Index
等搜索结果元数据,这将帮助您区分匹配的文档源。
searchResponse.Hits
.Select(x =>
x.Index == "trusted"
? x.Source with { TrustedSource = true }
: x.Source with { TrustedSource = false });
record SearchResultItem(int Id, bool TrustedSource);