gpt4 book ai didi

ruby-on-rails - 如何使用耐嚼的 gem 使用Elasticsearch滚动API?

转载 作者:行者123 更新时间:2023-12-03 00:15:42 25 4
gpt4 key购买 nike

我在ROR应用程序中使用“耐嚼” gem 进行 flex 搜索。但是我没有找到任何有关Elasticsearch滚动API的文档。跳转到记录的最后一页时,我遇到了错误。

[500] {"error":{"root_cause":[{"type":"query_phase_execution_exception","reason":"Result window is too
large, from + size must be less than or equal to: [10000] but was [19450]. See the scroll api for a more
efficient way to request large data sets. This limit can be set by changing the [index.max_result_window]
index level parameter."}],"type":"search_phase_execution_exception","reason":"all shards failed",
"phase":"query","grouped":true,"failed_shards":[{"shard":0,"index":"recordings","node":"tgLqH_wwRUG6NmY0PCB0nA",
"reason":{"type":"query_phase_execution_exception","reason":"Result window is too large, from + size must
be less than or equal to: [10000] but was [19450]. See the scroll api for a more efficient way to request
large data sets. This limit can be set by changing the [index.max_result_window] index level
parameter."}}]},"status":500}

有什么方法可以在耐嚼的gem中实现elasticsearch滚动api还是它们有其​​他选择?

最佳答案

只需减小查询大小,就可以批量使用滚动:

  # @example Call the `scroll` API until all the documents are returned
#
# # Index 1,000 documents
# client.indices.delete index: 'test'
# 1_000.times do |i| client.index index: 'test', type: 'test', id: i+1, body: {title: "Test #{i}"} end
# client.indices.refresh index: 'test'
#
# # Open the "view" of the index by passing the `scroll` parameter
# # Sorting by `_doc` makes the operations faster
# r = client.search index: 'test', scroll: '1m',
body: {size: 100, sort: ['_doc']}
#
# # Display the initial results
# puts "--- BATCH 0 -------------------------------------------------"
# puts r['hits']['hits'].map { |d| d['_source']['title'] }.inspect
#
# # Call the `scroll` API until empty results are returned
# while r = client.scroll(scroll_id: r['_scroll_id'], scroll: '5m') and not r['hits']['hits'].empty? do
# puts "--- BATCH #{defined?($i) ? $i += 1 : $i = 1} -------------------------------------------------"
# puts r['hits']['hits'].map { |d| d['_source']['title'] }.inspect
# puts
# end

使用 here摘自 Elasticsearch DSL Gem的示例

关于ruby-on-rails - 如何使用耐嚼的 gem 使用Elasticsearch滚动API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36158034/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com