我有一个这样的文件:
{
"listings": {
"mappings": {
"listing": {
"properties": {
"auctionOn": {
"type": "date"
},
"inspections": {
"type": "nested",
"properties": {
"endsOn": {
"type": "date"
},
"startsOn": {
"type": "date"
}
}
},
// more fields.. snipped for brevity
}
}
}
}
}
并且我想执行以下搜索:(需要是布尔过滤器。.无需评分)
换句话说,可能的搜索:
现在,我已经在布尔查询过滤器中:
{
"query":
{
"bool":
{
"filter":[{"terms":{"location.suburb":["Camden"]}}
}
}
}
,我需要将此新过滤器分开。所以..这就像是主布尔过滤器中的嵌套过滤器?
因此,如果提供了“郊区=卡姆登,日期= ['2018-11-01','2018-11-02']'
然后应返回郊区= Camden的文件,并且检查或拍卖日期均包括所提供的日期之一。
我对如何做感到很困惑,所以任何帮助将不胜感激!
答案 0 :(得分:2)
针对您在问题中提到的案例,将有很多布尔查询组合。以您提到的示例为例,
因此,如果提供了“郊区=卡姆登,日期= ['2018-11-01','2018-11-02']'
然后,它应该返回郊区= Camden且其中一个 检查或拍卖日期包括提供的日期之一。
假设您的位置过滤器按预期工作,例如上述日期中的日期该查询的附加内容将是:
{
"query": {
"bool": {
"filter": [
{
"terms": {
"location.suburb": [
"Camden"
]
}
},
{
"bool": {
"should": [
{
"terms": {
"auctionOn": [
"2018-11-01",
"2018-11-02"
]
}
},
{
"nested": {
"path": "inspections",
"query": {
"bool": {
"should": [
{
"terms": {
"inspections.startsOn": [
"2018-11-01",
"2018-11-02"
]
}
},
{
"terms": {
"inspections.endsOn": [
"2018-11-01",
"2018-11-02"
]
}
}
]
}
}
}
}
]
}
}
]
}
}
}