带过滤器的Elasticsearch随机评分

时间:2018-11-18 23:41:59

标签: elasticsearch

使用ES 6.5时,我可以执行boolrandom_score,但不能同时执行。这是这些潜在查询之一:

{
  "from": 0,
  "size": 50,
  "query": {
    "function_score": {
      "random_score": {
        "seed": 10,
        "field": "_seq_no"
      }
    },
    "bool": {
      "filter": [
        {
          "terms": {
            "primary_category": [
              "foobar"
            ]
          }
        },
        {
          "terms": {
            "primary_type": [
              "barbaz"
            ]
          }
        }
      ]
    }
  }
}

如果我要删除function_score块或bool块,则该查询有效,但结合起来,却不能:

[function_score] malformed query, expected [END_OBJECT] but found [FIELD_NAME]

我在https://www.elastic.co/guide/en/elasticsearch/reference/6.2/query-dsl-function-score-query.html#function-random

上缺少有关示例的信息吗?

我想做的就是以一种可预测的方式对结果进行“随机排序”,这将在分页等过程中起作用。实际上,我只是试图以高方差显示过滤后的结果,因为任何类型的标准排序都会创建模式结果我想避免。

任何帮助将不胜感激,我将继续努力。

1 个答案:

答案 0 :(得分:0)

我知道了。 function_score应该是bool块的一部分。