Batasi jumlah hasil Elasticsearch di Rails

Saya menjalankan Rails dengan Elasticsearch menggunakan permata elasticsearch-rails dan will_paginate dan semuanya berfungsi dengan baik.

Satu-satunya masalah yang saya alami adalah jumlah catatan saya bertambah lebih dari 10.000 yang memberikan kesalahan "Jendela hasil terlalu besar, dari + ukuran harus kurang dari atau sama dengan: [10000] tetapi [10200]" ketika seseorang mengklik di halaman terakhir tautan penomoran halaman.

Sekarang saya tidak ingin main-main dengan index.max_result_window karena kumpulan data saya akan jauh lebih besar dan saya benar-benar tidak memerlukan pengunjung untuk dapat melihat setiap halaman dan mencatatnya.

Jadi pada dasarnya saya hanya ingin menetapkan batas 10.000 pada hasil saya, tetapi saya tidak berhasil mewujudkannya.

Ini adalah pertanyaan yang saya miliki dalam tindakan pengontrol saya:

@response = Price.search(params)
@response = @response.paginate(page: params[:page], per_page: 24)
@prices = @response.records.includes(shop: :pictures)
@prices_count = @response.total_entries
@prices = @prices.decorate
@results = @response.results

Dan saya memberi @response ke will_paginate menggunakan

will_paginate(@response)

Saya sudah mencoba menggunakan .limit(10000) di berbagai tempat dan memberikan nilai total_entries ke will_paginate tetapi sepertinya tidak ada yang berhasil.

Apakah kalian punya ide?

Terima kasih!


person Reinier    schedule 26.11.2017    source sumber


Jawaban (2)


Saya mengalami masalah yang sama, dalam kasus saya, saya menggunakan kaminari tetapi seharusnya berfungsi sama dengan will_paginate:

= memberi nomor halaman pada @keyword_search_results

Dengan 25 hasil per halaman setelah 400 halaman muncul kesalahan index.max_result_window, jadi saya cukup menambahkan opsi :total_pages ke paginate

= membuat nomor halaman @keyword_search_results, {:total_pages => 400}

Sebaiknya hitung nilai tersebut secara dinamis berdasarkan kebutuhan Anda.

person Carlos Castillo    schedule 06.06.2018
comment
Persis apa yang saya cari. Sederhana dan elegan. - person RaphaMex; 18.04.2019

gunakan opsi per_halaman
@response = Price.search(params, per_page: 24)

person Shani    schedule 26.11.2017