弹性搜索中的范围值搜索,而不是返回结果

时间:2016-08-18 14:24:17

标签: elasticsearch

我有问题。 我试图提出大量查询,但没有人回复任何文件。

我的数据格式如下:

{
    "_index": "orders",
    "_type": "order",
    "_id": "AVad66hjiOD-asNwVILB",
    "_score": 1,
    "_source": {
      "document": {
        "orderID": "1337",
        "sku": "awesomeSku",
        "customerID": "7331",
        "productID": "20490859",
        "variantID": "97920239",
        "createTime": "2016-07-13T13:23:19Z",
        "retailPrice": "10000",
        "costPrice": "10000",
        "new": 123
      }
    }
  }

我的查询:

{
"query": { 
"bool": {
  "filter": [ 
    { "range": { "new": { "gte": "20" } } } 
  ]
}
  }
}

我只想简单地从某个地方开始,找到所有具有“new”属性且值大于20的文档。 任何反馈都会很棒。

编辑:

ES中的Data formart:

{
 "orders": {
"mappings": {
  "order": {
    "properties": {
      "document": {
        "properties": {
          "costPrice": {
            "type": "string"
          },
          "createTime": {
            "type": "string"
          },
          "customerID": {
            "type": "string"
          },
          "new": {
            "type": "long"
          },
          "orderID": {
            "type": "string"
          },
          "productID": {
            "type": "string"
          },
          "retailPrice": {
            "type": "string"
          },
          "sku": {
            "type": "string"
          },
          "variantID": {
            "type": "string"
          }
        }
      }
    }
  }
  }
 }
 }

1 个答案:

答案 0 :(得分:1)

您需要在document.new字段上进行此类查询,因为您的所有字段都嵌套在顶级document部分中:

{
  "query": {
    "bool": {
      "filter": [
        {
          "range": {
            "document.new": {
              "gte": 20
            }
          }
        }
      ]
    }
  }
}