# Randomise hits results every iterations

**URL:** <https://discuss.elastic.co/t/randomise-hits-results-every-iterations/309260>\
**Category:** Elasticsearch\
**Created:** [July 10, 2022, 7:01am UTC](https://discuss.elastic.co/t/randomise-hits-results-every-iterations/309260 "2022-07-10T07:01:35Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Eddie\_Vuong](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/eddie_vuong/32/99049_2.png) [@Eddie\_Vuong](https://discuss.elastic.co/u/Eddie_Vuong)\
**Post date:** [July 10, 2022, 7:01am UTC](https://discuss.elastic.co/t/randomise-hits-results-every-iterations/309260/1 "2022-07-10T07:01:35Z")

</div>

Is there any way to randomise the search hits every I rerun a query?

Due to the large number of hits, I just want to sample my results and do some statistical test on it. However, I have yet to find a way to randomise the search hits.

I read about `function_score`, however it seem to return the same of set of hits every time I rerun the query. I tried with different `seed_number` also, but there's no change after every rerun.

Here my code

```auto
    "size": 1000, 
    "sort": [{"gc_transaction": "desc"}],
    "query": {
        "function_score": {
            "query": {
                "bool": {
                    "filter": {
                        "range": {
                            "@timestamp": {
                                "gte": "now-30d", 
                                "lte": "now", 
                                "format": "strict_date_optional_time"
                            }
                        }
                    }, 
                    "must": [
                    ], 
                },
            },
            "random_score": {"seed": 3241325325}, 
            "score_mode": "sum"
        } 
    }

```

---

<div class="post-metadata">

**Author:** ![Christian\_Dahlqvist](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/christian_dahlqvist/32/4617_2.png) [@Christian\_Dahlqvist](https://discuss.elastic.co/u/Christian_Dahlqvist)\
**Post date:** [July 10, 2022, 8:50am UTC](https://discuss.elastic.co/t/randomise-hits-results-every-iterations/309260/2 "2022-07-10T08:50:20Z")

</div>

Have you tried omitting the seed parameter as in [this first example](https://www.elastic.co/guide/en/elasticsearch/reference/8.2/query-dsl-function-score-query.html#query-dsl-function-score-query)?

---

<div class="post-metadata">

**Author:** ![Eddie\_Vuong](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/eddie_vuong/32/99049_2.png) [@Eddie\_Vuong](https://discuss.elastic.co/u/Eddie_Vuong)\
**Post date:** [July 10, 2022, 9:16am UTC](https://discuss.elastic.co/t/randomise-hits-results-every-iterations/309260/3 "2022-07-10T09:16:05Z")

</div>

Yes, I tried that firstly and because it didn't work, I tried with the `seed` paramater.

---

<div class="post-metadata">

**Author:** ![Christian\_Dahlqvist](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/christian_dahlqvist/32/4617_2.png) [@Christian\_Dahlqvist](https://discuss.elastic.co/u/Christian_Dahlqvist)\
**Post date:** [July 10, 2022, 9:18am UTC](https://discuss.elastic.co/t/randomise-hits-results-every-iterations/309260/4 "2022-07-10T09:18:01Z")

</div>

> [@Eddie\_Vuong](#):
>
> `"sort": [{"gc_transaction": "desc"}],`

What if you remove the seed and the sort settings?

---

<div class="post-metadata">

**Author:** ![Eddie\_Vuong](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/eddie_vuong/32/99049_2.png) [@Eddie\_Vuong](https://discuss.elastic.co/u/Eddie_Vuong)\
**Post date:** [July 10, 2022, 9:22am UTC](https://discuss.elastic.co/t/randomise-hits-results-every-iterations/309260/5 "2022-07-10T09:22:12Z")

</div>

Then how would I paginate through the results? I want to get at least 10k results (my company lib for elasticsearch only allow 1k results each query). Is there other way to paginate without sorting?

---

<div class="post-metadata">

**Author:** ![Christian\_Dahlqvist](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/christian_dahlqvist/32/4617_2.png) [@Christian\_Dahlqvist](https://discuss.elastic.co/u/Christian_Dahlqvist)\
**Post date:** [July 10, 2022, 10:42am UTC](https://discuss.elastic.co/t/randomise-hits-results-every-iterations/309260/6 "2022-07-10T10:42:34Z")

</div>

> [@Eddie\_Vuong](#):
>
> Then how would I paginate through the results? I want to get at least 10k results (my company lib for elasticsearch only allow 1k results each query).

Might have been usseful to mention this up front. Have you tried using a static seed parameter for all related requests without sorting while paging?

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [August 7, 2022, 10:42am UTC](https://discuss.elastic.co/t/randomise-hits-results-every-iterations/309260/7 "2022-08-07T10:42:45Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
