带有范围过滤器的Elasticsearch地理多边形查询

问题描述

我正在尝试使用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
          }
        }
      ]
    }
  }
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...