我正在尝试执行以下操作,但这会导致null_pointer_exception。
我想要实现的是一个范围(独立的这个工作)和过滤所有星期六之间的结果。但是我尝试过组合过滤器。那么有没有办法组合这些过滤器,还是我应该寻求替代解决方案?
"query": {
"filtered": {
"query": {
"match_all": []
},
"filter": {
"range": {
"myDateField": {
"from": "2015-10-09 00:00:00",
"to": "2015-12-31 00:00:00"
}
},
"script": {
"script": ["doc['myDateField'].date.dayOfWeek == 6"]
}
}
}
},
答案 0 :(得分:0)
如果你的版本是< 2.x版本使用bool filter
组合多个查询:
{
"query": {
"bool": {
"must": [
{
"range": {
"myDateField": {
"from": "2015-10-09 00:00:00",
"to": "2015-12-31 00:00:00"
}
}
},
{
"script": {
"script": [
"doc['myDateField'].date.dayOfWeek == 6"
]
}
}
]
}
}
}
Filters
已在2.x版本中弃用。您可以使用Bool Query
来实现相同目标。
答案 1 :(得分:0)
正如我对@ Richa的回答所述,filtered
查询也是deprecated。您应该将其全部删除,只需使用包含bool/filter
和range
过滤条件的script
。
{
"query": {
"bool": {
"filter": [
{
"range": {
"myDateField": {
"from": "2015-10-09 00:00:00",
"to": "2015-12-31 00:00:00"
}
}
},
{
"script": {
"script": [
"doc['myDateField'].date.dayOfWeek == 6"
]
}
}
]
}
}
}