Как работает ES несколько случайных запросов без повторения результатов? - PullRequest
0 голосов
/ 14 июня 2019

asticsearch версия 5.0

У меня есть требование произвольно запрашивать информацию о пользователе несколько раз, но в конечном результате не может быть дублированных данных.

Например,

первый случайный результат запроса

user0 user1 user2

второй случайный результат запроса

user0 user3 user4 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 голосов
/ 14 июня 2019

Вы можете использовать запрос bool must_not и запрос id для удаления идентификаторов ранее полученных документов.

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

0 голосов
/ 14 июня 2019
 {
   "size": 1,
   "query": {
      "function_score": {
         "functions": [
            {
               "random_score": {
                  "seed": "1477072619038"
               }
            }
         ]
      }
   }
}

Вы можете следить за этим https://www.elastic.co/guide/en/elasticsearch/reference/5.4/query-dsl-function-score-query.html#function-random

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...