根据ES内部标识符,查找给出错误的Elasticsearch文档

rslzwgfq  于 2023-06-21  发布在  ElasticSearch
关注(0)|答案(1)|浏览(114)

当我在Elasticsearch中进行搜索查询时(这是从Rails应用程序连接到基于Rails的API,该API又基于Elasticsearch索引,该查询基本上是对API中的所有文档进行文本搜索),它给我以下错误:The length [3618270] of field [text] in doc[126737]/index[my-index] exceeds the [index.highlight.max_analyzed_offset] limit [1000000]. To avoid this error, set the query parameter [max_analyzed_offset] to a value less than index setting [1000000] and this will tolerate long field values by truncating them.这似乎表明特定条目的text字段太长。如果能够定位特定的文档,并在将其引入API时截断该字段,这将很有帮助。然而,如何在给定doc[126737]的情况下找到它并不明显,这似乎是Elasticsearch内部的标识符。
我运行了一个Elasticsearch的本地示例,并使用http://localhost:9200/my-index/_doc/126737进行了查询,认为这可能是一种基于内部ID检索文档的方法。相反,我得到了以下信息,表明它没有找到:

{
  "_index": "my-index",
  "_id": "126737",
  "found": false
}

所有的文档都有一个id字段,但是我们正在为我们的项目手动生成一些东西。我认为,如果我错了,请纠正我,elasticsearch正在寻找手动生成的id,但没有找到它。有没有办法直接根据错误消息中的id来查找文档?

uidvcgyl

uidvcgyl1#

你说得对,那个ID是没用的,因为它是ES内部的。
这是一个预定义的限制,以防止在突出显示大文本字段时耗尽内存。如果您愿意冒这个风险,那么可以决定通过以下命令更改索引设置,将该限制增大到大于3618270的值

PUT whitman-new/_settings
{
    "index.highlight.max_analyzed_offset": 4000000
}

相关问题