我在我的页面中将搜索和聚合结合起来。
当从不同的组合并时,聚合工作正常,但是当我从同一组中选择多个聚合时,聚合工作不正常。
例如...如果我在默认页面上显示2个聚合,则说明
aggA(1000) aggB(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而不是仅搜索列表中的最后一个值。 ?
答案 0 :(得分:0)
通过向每个查询添加.minimumshouldmatch(100%)
来解决此问题。