如何为ElasticSearch过滤查询应用大小?

时间:2014-03-08 22:00:56

标签: elasticsearch

对于常规查询大小,可以正常工作:

{
  "query": {
    "match_all": {}
  },
  "size": 2
}

返回2个结果。但是当我尝试通过geo_polygon添加过滤器时:

{
  "query": {
    "filtered": {
      "query": {
        "match_all": {}
      },
      "filter": {
        "geo_polygon": {
          "coordinate": {
            "points": {
              "points": [
                [
                  -84.293222919922,
                  33.865223592668
                ],
                [
                  -84.293222919922,
                  33.632776407332
                ],
                [
                  -84.482737080078,
                  33.632776407332
                ],
                [
                  -84.482737080078,
                  33.865223592668
                ],
                [
                  -84.293222919922,
                  33.865223592668
                ]
              ]
            }
          }
        }
      }
    }
  },
  "size": 2
}

它总是返回10个结果,看起来完全忽略“size”参数。是否有任何特定的方法可以使“大小”适用于过滤查询?

的MacOS,

elasticsearch

version: {
    number: 1.0.1
    lucene_version: 4.6
}

2 个答案:

答案 0 :(得分:5)

在Ubuntu上运行的1.2.1版中可以正常工作:

{
  "from": 0,
  "size": 100,
  "query": {
    "filtered": {
      "query": {
        "match_all": {}
      },
      "filter": {
        ...blah...
      }
    }
  }
}

答案 1 :(得分:0)

如果将size参数放在query参数中,这似乎也有效。

{
  "query": {
    "filtered": {
      "query": {
        "match_all": {}
      },
      "filter": {
        ...blah...
      }
    },
    "size": 100
  }
}