python-3.x - 带有范围过滤器的 Elasticsearch Geo Polygon 查询
问题描述
我正在尝试使用 Geo 多边形点从 Elasticsearch 中检索一些图像字段。但是,我也想使用日期字段过滤掉图像。以下两个查询有效。有没有可能将它们合二为一?我非常感谢任何帮助。
**Query 1**
GET /manyimages_*/_search/
{
"query": {
"bool" : {
"filter" : {
"range": {"c_datetime": {"gte" : "2020-07-30T09:03:17.000"}}
}
}
}
}
**Query 2**
GET /manyimages_*/_search/
{
"size":10000,
"query":
{
"geo_polygon":
{"location":
{"points": [[-98.59526078405563, 29.48456853315911],
[-98.59393149263758, 29.485036283823487],
[-98.58712997745901, 29.48730046713193]]}
,"validation_method":"STRICT","ignore_unmapped":false,"boost":1.0
}
}
,"_source":{"includes":["latitude","longitude","bearing_deg","c_datetime"],"excludes":["location"]
}
}
解决方案
是的,您可以简单地在bool/filter
子句中同时包含两个约束:
GET /manyimages_*/_search/
{
"query": {
"bool": {
"filter": [
{
"range": {
"c_datetime": {
"gte": "2020-07-30T09:03:17.000"
}
}
},
{
"geo_polygon": {
"location": {
"points": [
[
-98.59526078405563,
29.48456853315911
],
[
-98.59393149263758,
29.485036283823487
],
[
-98.58712997745901,
29.48730046713193
]
]
},
"validation_method": "STRICT",
"ignore_unmapped": false,
"boost": 1
}
}
]
}
}
}
推荐阅读
- node.js - Node.Js 应用无法成功部署到 Heroku
- java - 外部化 Grails 应用程序的运行配置
- ruby-on-rails - 如何使用控制器将对象传递给部分?
- docker - 项目中具有不同上下文的多个 Dockerfile
- node.js - 如何使 404 路由在 React-Router 中工作?
- powershell - 使用子字符串使用powershell在另一个变量上查找变量
- symfony - 如何使用 Twig 在变量上添加动态属性?
- javascript - Javascript中是否有一种简单的方法可以使用字典对字符串进行编码?
- c++ - 基于 OO 的 C++ 库的 C 和 C++ 接口
- python - 线性回归 - Tensorflow