我在弹性搜索中有一个基础数据和正确的结果请求。
var searchResults = _client.Search<Apartment>(s => s
.Size(pageSize)
.Query(d => d.Term(t => t.Field(apartment => apartment.IsDeleted).Value(false))
&& (d.Terms(t => t.Field(car => car.Host).Terms(hosts))))
.Sort(ss => ss.Descending(p => p.CollectedDate))
.Scroll(TimeSpan.FromSeconds(20))
.Index(Index));
但是我无法添加新的过滤器来请求。你能帮助我吗?我读了这个Multi Terms search NEST C#并尝试了下一个请求:
var searchResults2 = _client.Search<Apartment>(s => s
.Size(pageSize)
.Query(d => d.Term(t => t.Field(apartment => apartment.IsDeleted).Value(false))
&& (d.Terms(t => t.Field(car => car.Host).Terms(hosts)))
&& (d.Terms(t => t.Field(car => car.Transaction).Terms(dealTypeStr))))
.Sort(ss => ss.Descending(p => p.CollectedDate))
.Scroll(TimeSpan.FromSeconds(20))
.Index(Index));
var total2 = searchResults2.Total;
var searchResults3 = _client.Search<Apartment>(s => s
.Size(pageSize)
.Query(q => q
.Bool(b => b
.Must(d => d.Term(t => t.Field(apartment => apartment.IsDeleted).Value(false))
&& (d.Terms(t => t.Field(car => car.Host).Terms(hosts)))
&& (d.Terms(t => t.Field(car => car.Transaction).Terms(dealTypeStr))))))
.Sort(ss => ss.Descending(p => p.CollectedDate))
.Scroll(TimeSpan.FromSeconds(20))
.Index(Index));
var total3 = searchResults3.Total;
var searchResults4 = _client.Search<Apartment>(s => s
.Size(pageSize)
.Query(q => q
.Bool(b => b
.Must(d => d.Term(t => t.Field(apartment => apartment.IsDeleted).Value(false))
&& (d.Terms(t => t.Field(car => car.Host).Terms(hosts)))
&& (d.Term(f => f.Transaction, dealTypeStr)))))
.Sort(ss => ss.Descending(p => p.CollectedDate))
.Scroll(TimeSpan.FromSeconds(20))
.Index(Index));
var total4 = searchResults4.Total;
结果空洞。我没纠正? 谢谢
答案 0 :(得分:0)
看起来dealTypeStr是单个字符串。 在这种情况下,您的请求应如下所示。
var searchResults = _client.Search<Apartment>(s => s
.Size(pageSize)
.Query(d => d.Term(t => t.Field(apartment => apartment.IsDeleted).Value(false))
&& d.Term(t => t.Field(apartment => apartment.Transaction).Value(dealTypeStr))
&& (d.Terms(t => t.Field(car => car.Host).Terms(hosts))))
.Sort(ss => ss.Descending(p => p.CollectedDate))
.Scroll(TimeSpan.FromSeconds(20))
.Index(Index));