ES如何在不重复结果的情况下进行多个随机查询?

时间:2019-06-14 02:59:20

标签: elasticsearch

  

elasticsearch 5.0版

我需要多次随机查询用户信息,但最终结果不能包含重复数据。

例如

第一个随机查询结果

  

user0 user1 user2

第二个随机查询结果

  

user0 user3 user4

User0是重复项。

这是我的随机查询,如何修改?

{
  "size" : 10,
  "query" : {
    "match_all" : {
      "boost" : 1.0
    }
  },
  "_source" : {
    "includes" : [

    ],
    "excludes" : [ ]
  },
  "sort" : [
      {
      "_script" : {
        "script" : {
          "inline" : "Math.random()",
          "lang" : "painless"
        },
        "type" : "number",
        "order" : "asc"
      }
    }
  ],
  "ext" : { }
}

2 个答案:

答案 0 :(得分:0)

 {
   "size": 1,
   "query": {
      "function_score": {
         "functions": [
            {
               "random_score": {
                  "seed": "1477072619038"
               }
            }
         ]
      }
   }
}

You can follow this https://www.elastic.co/guide/en/elasticsearch/reference/5.4/query-dsl-function-score-query.html#function-random

答案 1 :(得分:0)

您可以使用bool must_not查询和id查询删除以前检索的文档的ID。

{
  "query": {
    "match_all": {
      "boost": 1.0
    },
    "bool": {
      "must_not": [
        {
          "ids": {
            "values": [The set of previous Ids]
          }
        }
      ]
    }
  },
  ...
}