【发布时间】:2020-05-05 11:59:09
【问题描述】:
通过嵌套的单个查询检索我所期望的,但是当我尝试使用这两个查询来创建逻辑 AND 查询时,它似乎只返回 MatchPhrase 的值并且它忽略了 DateRange。
个别查询是..
resultsList = Client.SearchAsync<AuditLog>(s => s
.From(0)
.Take(10)
.Query(q => q
.MatchPhrase(mp => mp
.Field("audit_Action")
.Query("Successful logout")
)
)
).Result.Documents.ToList();
还有……
resultsList = Client.SearchAsync<AuditLog>(s => s
.From(0)
.Take(10)
.Query(q => q
.DateRange(r => r
.Field("audit_TimeStamp")
.GreaterThanOrEquals("2017-03-07T13:00:00")
.LessThanOrEquals("2017-03-07T14:00:00")
)
)
).Result.Documents.ToList();
这两个查询分别返回正确数量的行,10 和 5,但是当我结合这两个查询时,它仍然返回 10 行,而不是预期的 1。我修改后的查询是...
resultsList = Client.SearchAsync<AuditLog>(s => s
.From(0)
.Take(10)
.Query(q => q
.Bool(b => b
.Must(m1 => m1
.DateRange(r => r
.Field("audit_TimeStamp")
.GreaterThanOrEquals("2017-03-07T13:00:00")
.LessThanOrEquals("2017-03-07T14:00:00")
)
)
.Must(m1 => m1
.MatchPhrase(m => m
.Field("audit_Action")
.Query("Successful logout")
)
)
)
)
).Result.Documents.ToList();
不确定出了什么问题,但认为这可能是因为我习惯了 MUST 并且它们正在被 OR'd
【问题讨论】:
标签: nest