记使用ElasticSearch遇到的一些问题

1.使用elasticsearch做分页查询时,当查询记录超过10000时报错

原因:
因为es数据是存储在不同分片上的,假设取的页数较大时(深分页),像是请求第 20 页,es 不得不取出所有分片上的第 1 页到第 20 页的所有文档,并做排序,最终再取出结果。假设你有 16 个分片,则需要处理 16 * (20 + 10) 条记录后做一次全局排序,而当索引非常非常大(千万或亿)时,会非常消耗 CPU 和内存资源,所以为了保护机器,es使用 index.max_result_window:10000 这个设定作为保护措施 。

解决办法:修改最大限制

PUT articles/_settings
{ 
    "index" : { 
        "max_result_window" : 20000
    }
}

但这种方法只是暂时解决问题,当数据量越来越大,分页也越来越深,还是会出问题的,业务上尽量避免这种情况,一般也没有需要翻页这么深的需求。

2.报错 startOffset must be non-negative, and endOffset must be u003e= startOffset, and offsets must not go backwards startOffset=2538,endOffset=2539,lastStartOffset=2539 for field ‘content’

原因:这应该是ik分词器的一个bug

解决办法:
1.可以试试更新到新版。
2.因为我们使用的是阿里云的,找他们咨询之后,他们让我们重新启动es,重启之后问题就解决了。

由于版权原因,本站共享资源只供云盘资源,版权均属于影片公司所有,请在下载后24小时删除,切勿用于商业用途。本站所有资源信息均从互联网搜索而来,本站不对显示的内容承担责任,如您认为本站页面信息侵犯了您的权益,请附上版权证明邮件并发送到[email protected]告知,我们会在收到邮件后72小时内删除。
想开点 » 记使用ElasticSearch遇到的一些问题