【问题标题】:Elasticsearch NEST API, Searching Multiple IndicesElasticsearch NEST API,搜索多个索引
【发布时间】:2021-08-12 10:19:43
【问题描述】:

如果同时搜索多个索引,有没有办法说如果搜索索引A,则添加此过滤器,如果搜索索引B,则添加不同的过滤器。

例如:

var filters = new List<Func<QueryContainerDescriptor<PropertySearchResult>, QueryContainer>>();
filters.Add(fq => fq.Term(t => t.Field(f => f.PromoterId).Value(user.Id)));
filters.Add(fq => fq.Term(t => t.Field(f => f.SubscriptionId).Value(subscriptionId)));
string indicies = String.Join(",", Utils.SupportedCountries.Select(c => c.Key.ToLower()).ToArray());
var result = await ElasticSearchConfig.GetClient().DeleteByQueryAsync<PropertySearchResult>(u => u
               .Index(indicies)
               .Query(q => q
               .Bool(bq => bq.Filter(filters))));

目前,所有索引都将使用相同的过滤器,但我想根据正在搜索的索引来改变过滤器。

【问题讨论】:

    标签: elasticsearch nest


    【解决方案1】:

    向每个过滤器添加(使用 &&)术语查询

    .Term("_index", A)
    

    检查此链接 https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-index-field.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-12
      • 2018-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-13
      • 1970-01-01
      相关资源
      最近更新 更多