【问题标题】:Elasticsearch nest search multiple field valuesElasticsearch 嵌套搜索多个字段值
【发布时间】:2015-12-04 14:49:14
【问题描述】:

我正在页面中结合搜索和聚合。

从不同组组合时聚合工作正常,但当我从同一组中选择多个聚合时无法正常工作。

例如...如果我有 2 个聚合显示在默认页面加载上说

aggA (1000) 聚合 (400)

正确选择 aggA 会显示 1000 个结果...而 aggB 将相应减少为 50

但是,当我然后单击 aggB 而不是获得预期的 50 个结果时,我得到 400...因此我的搜索结果没有结合 2 个搜索查询值,而只是作用于传递给 elasticsearch 的列表中的最后一个.

我的代码:

objESResults = client.Search<ESContent>(s => s
        .Query(a =>
        {
            return
            a.Match(m => m.OnField("_all").Query(m_strSearchQuery).Operator(Operator.And))                
            && a.TermsDescriptor(t => t.OnField(f => f.ContentType).Terms(m_lstSelectedContentType))
            && a.TermsDescriptor(t => t.OnField(f => f.Sectors).Terms(m_lstSelectedSector))
            && a.TermsDescriptor(t => t.OnField(f => f.Companies).Terms(m_lstSelectedCompany))
            && a.TermsDescriptor(t => t.OnField(f => f.ContentRegions).Terms(m_lstSelectedContentRegion))
            && a.TermsDescriptor(t => t.OnField(f => f.Author).Terms(m_lstSelectedAuthor))
            && a.TermsDescriptor(t => t.OnField(f => f.Country).Terms(m_lstSelectedCountry))
            && a.TermsDescriptor(t => t.OnField(f => f.Columns).Terms(m_lstSelectedColumns))
            && a.Range(t => t.OnField(f => f.EntryDate).GreaterOrEquals(DateFrom));
        }

m_lstSelectedSector 将包含 aggA 和 aggB 的值,但有没有办法让弹性搜索对它们进行 AND 而不是仅搜索列表中的最后一个值。 ?

【问题讨论】:

    标签: elasticsearch nest


    【解决方案1】:

    通过在每个查询中添加.minimumshouldmatch(100%) 来解决它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-22
      相关资源
      最近更新 更多