Как получить 3 случайных результата поиска в запросеasticserch - PullRequest
0 голосов
/ 22 марта 2019

У меня есть запрос эластичного поиска, который возвращает запись в диапазоне опубликованных дат:

{
  query : {
    bool: {
      filter: [

      ],
      must: {
        range: {
          publishedDate: {
            gte: "2018-11-01",
            lte: "2019-03-30"
          }
        }
      }
    }
  }
  from: 0,
  size: 3,
}

Мне нужно показывать 3 случайных результата каждый раз, когда я отправляю этот запрос

Он упоминается в эластичная поисковая документация , которую я могу отправить для получения случайных результатов:

После изучения документации я обновил свой запрос следующим образом:

{
  "query" : {
    "bool": {
      "filter": [

      ],
      "must": {
        "range": {
          "publishedDate": {
            "gte": "2018-11-01",
            "lte": "2019-03-30"
          }
        }
      }
    },
    "function_score": {
      "functions": [
        {
          "random_score": {
            "seed": "123123123"
           }
        }
      ]
    }
  },
  "from": 0,
  "size": 3
}

Но это не такработает (говорит, что запрос искажен), может кто-нибудь предложить, как исправить этот запрос, чтобы получить 3 случайных результата поиска.

1 Ответ

1 голос
/ 22 марта 2019

Если вам просто нужны случайные результаты, вы можете реструктурировать запрос, чтобы он был похож на следующий

{
  "query": {
    "function_score": {
      "query": {
        "range": {
          "publishedDate": {
            "gte": "2018-11-01",
            "lte": "2019-03-30"
          }
        }
      },
      "boost": "5",
      "random_score": {},
      "boost_mode": "multiply"
    }
  },
  "from": 0,
  "size": 3
}

Изменено из эластичной документации - https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html

...