【问题标题】:Range query for long type in aws elasticsearchaws elasticsearch中长类型的范围查询
【发布时间】:2019-09-05 17:54:51
【问题描述】:

我正在尝试在 AWS 中查询弹性搜索索引以获取质量属性大于 1000 的所有条目,该属性的数据类型为 Long。

我找到了范围查询并尝试过(参见下面的示例),但它什么也没返回,但当我使用其他查询时,它们返回质量大于 1000 的属性,因此它们肯定在索引中。

这是我正在尝试的范围查询:

{
  "method": "POST",
  "index": "users",
  "type": "user",
  "path": "_search?filter_path=filter",
  "body": {
    "size": 20,
    "from": 0,
    "query": {
        "bool": {
            "must":[{
                "range": {
                  "mass": {
                    "gte": 1000
                  }
                }
            }]
        }

    }
  }
}

我没有收到任何错误消息,只有零次命中。

【问题讨论】:

  • 在 bool 元素下是否有更多的 bool 子句,或者为什么将单个范围查询放在布尔查询中?
  • 没有,我试过不带 bool(只有范围部分),但也没有用
  • 对我来说,您似乎使用了错误的 HTTP 动词。使用 GET 而不是 POST。
  • 刚刚尝试过,也获得了零点击
  • 移除 filter_path 参数。使用该参数,您可以控制响应中应包含的内容。

标签: amazon-web-services elasticsearch range-query


【解决方案1】:

所以导致您获得零点击的问题是您在

中指定的 filter_path 参数
"path": "_search?filter_path=filter"

正如官方documentation 中所述,filter_path 参数是有关 REST API 的常用选项的一部分。这意味着您可以随时添加该参数。

使用响应过滤,您可以减少 Elasticsearch 返回的响应。既然你定义了

_search?filter_path=filter

您可能会得到零命中,因为没有可以返回的过滤器元素。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-17
    • 1970-01-01
    • 2019-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多