如何理解多索引NEST查询中的源索引?

问题描述 投票:0回答:1

我的 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”字段的值设置为 truefalse

我如何了解每个项目来自哪个索引?

elasticsearch nest
1个回答
0
投票

您可以从

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);
© www.soinside.com 2019 - 2024. All rights reserved.