弹性搜索方面的大小

时间:2016-06-09 09:27:09

标签: elasticsearch

我正在使用ES 1.4。

我正在使用分页查询我的索引(在搜索查询中使用from和size以便每页有20个结果),并且我将搜索命中限制设置为100(所以我不能超过5页)

我正在尝试使用术语构面,但是计数字段是全局的,它在所有搜索命中都可以超过100个。

这是一个基本的例子:

{
    "from": 0,
    "size": 20, 
    "query": {
        "match_all": {}
    } , "facets" : {
    "tags" : {
        "terms" : {
            "field" : "tag"
        }
    }
  }
}

有没有办法在ES方面设置限制,只能查看前100次点击?

谢谢!

1 个答案:

答案 0 :(得分:0)

ElasticSeach提供了一个选项,用于将facet限制为查询返回的结果&过滤器。 您可以为每个方面将global参数设置为truefalse。如果未指定任何值,则global设置为true。 由于您只查看前100个结果,因此您应该对查询应用limit过滤器(limit filter documentation

尝试修改您的查询:

{
    "from": 0,
    "size": 20, 
    "query": {
        "filtered" : {
            "filter" : {
                "limit" : {"value" : 100}
            }
        }
    }, 
    "facets" : {
        "tags" : {
            "terms" : {
                "field" : "tag"
            }
            "global": false
        }
    }
}

如果您不想对数据应用任何过滤器,可以尝试使用limitlimit filter documentation)中的aggs过滤器:

{
  "aggs": {
    "limit_results": {
      "filter": {
        "limit": {
          "value": 100
        }
      },
      "aggs": {
        "tags": {
          "terms": {
            "field": "tag",
            "size": 10
          }
        }
      }
    }
  }
}

第二个size内的aggs参数是返回的标记组的数量。默认值为10documentation)。

请告诉我这是否有帮助:)