首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Elasticsearch中49条记录后的异常

Elasticsearch中49条记录后的异常
EN

Stack Overflow用户
提问于 2020-06-22 15:00:59
回答 2查看 277关注 0票数 0

我正在编写一个简单的应用程序,通过Kafka使用者将数据存储到Elasticsearch中。我的问题是,每当我执行相同的消费者应用程序,它是抛出一个异常后,处理40或50条记录。异常描述指出,总字段的限制已超过索引(1000)。我所了解到的是,Elasticsearch中的默认值(条目)是1000,但在我的例子中,它远远低于1000。

我在下面添加一个例外,谢谢您的帮助和建议!

Suppressed: org.elasticsearch.client.ResponseException: method [POST], host [https://kafka-poject-twitter-8210391326.eu-west-1.bonsaisearch.net:443], URI [/twitter/tweets?timeout=1m], status line [HTTP/1.1 400 Bad Request] {"error":{"root_cause":[{"type":"illegal_argument_exception","reason":"Limit of total fields [1000] in index [twitter] has been exceeded"}],"type":"illegal_argument_exception","reason":"Limit of total fields [1000] in index [twitter] has been exceeded"},"status":400} at org.elasticsearch.client.RestClient$SyncResponseListener.get(RestClient.java:920) at org.elasticsearch.client.RestClient.performRequest(RestClient.java:227) at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:1256)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-22 15:17:22

主要原因- Limit of total fields [1000] in index [twitter] has been exceeded

你可以通过增加限制来克服这一点。

代码语言:javascript
复制
PUT twitter/_settings
{
  "index.mapping.total_fields.limit": 2000
}
票数 1
EN

Stack Overflow用户

发布于 2020-06-22 15:27:26

您所面临的问题与插入的文档(tweet)数量无关,而与这些文档中包含的不同字段名的数量有关。

正如Elasticsearch的文档中所解释的:

限制已经到位,以防止映射和搜索变得太大。更高的值会导致性能下降和内存问题,特别是在负载高或资源少的集群中。

尽管你可以增加这个限制,但它可能不是解决你的问题的方法。如果您达到了1000只插入50条记录的极限,即使您增加了它,您可能很快就会再次达到新的限制。

为了解决这个问题,您应该对存储在Elasticsearch中的JSON进行一些预处理,确保只对相关字段进行索引。例如,假设您正在索引tweet,我希望文档具有如下模式:

代码语言:javascript
复制
{
  "author": ...,
  "timestamp": ...,
  "tweet": ...
}

有了这样的模式,您可以将字段Elasticsearch的数量限制在只跟踪3条,而不依赖于您编写的记录数量。

您可以使用索引模板设置严格属性来强制执行在Elasticsearch中插入的文档的架构。这样,如果在试图索引的文档中有不需要的字段,您将得到一个错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62517410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档