在弹性搜索中使用正则表达式查询的地理距离查询

Geo distance query with regex query in elastic search

我想用一个关键字进行查询,并在查询的关键字内仅显示我周围 150 公里的帖子 我下面的查询有效但显示了所有帖子

{
    "query": {
        "regexp": {
            "title": {
                "value": ".*h.*",
                "flags": "ALL",
                "max_determinized_states": 10000,
                "rewrite": "constant_score"
            }
        }
    },
     "sort": [{
        "date": {
            "order": "desc"
        }
    }]
}

但是当我像下面这样添加过滤器查询时,我收到了解析错误

"filter": {
              "geo_distance": {
                   "distance": "150km",
                        "location": {
                         "lat": \(latitude),
                         "lon": \(longitude)
                         }
                   }
          }

谁能帮忙

这是您应该使用的查询,它使用 bool/filter 查询结合了 regexp 查询和 geo_distance 查询:

{
  "query": {
    "bool": {
      "filter": [
        {
          "geo_distance": {
            "distance": "150km",
            "location": {
               "lat": \(latitude),
               "lon": \(longitude)
            }
          }
        },
        {
          "regexp": {
            "title": {
              "value": ".*h.*",
              "flags": "ALL",
              "max_determinized_states": 10000,
              "rewrite": "constant_score"
            }
          }
        }
      ]
    }
  },
  "sort": [
    {
      "date": {
        "order": "desc"
      }
    }
  ]
}