amazon-web-services - Elasticsearch 阶段 : [query] 的所有分片均失败

标签 amazon-web-services elasticsearch

我在 AWS 上有一个 elastsicsearch 实例(我有一个运行良好的类似实例。

我有一个 lambda 函数,可以将日志发送到 elasticsearch。一段时间后它停止工作,现在我看不到任何新日志。我查看了日志并发现了这个:

org.elasticsearch.transport.RemoteTransportException: [tqStC42][10.0.1.90:9300][indices:data/read/search[phase/query]]
Caused by: java.lang.IllegalArgumentException: size must be positive, got 0
at org.elasticsearch.search.aggregations.bucket.BucketUtils.suggestShardSideQueueSize(BucketUtils.java:40) ~[elasticsearch-5.1.1.jar:5.1.1]
at org.elasticsearch.search.aggregations.bucket.terms.TermsAggregatorFactory.doCreateInternal(TermsAggregatorFactory.java:100) ~[elasticsearch-5.1.1.jar:5.1.1]
at org.elasticsearch.search.aggregations.support.ValuesSourceAggregatorFactory.createInternal(ValuesSourceAggregatorFactory.java:55) ~[elasticsearch-5.1.1.jar:5.1.1]
at org.elasticsearch.search.aggregations.AggregatorFactory.create(AggregatorFactory.java:225) ~[elasticsearch-5.1.1.jar:5.1.1]
at org.elasticsearch.search.aggregations.AggregatorFactories.createTopLevelAggregators(AggregatorFactories.java:102) ~[elasticsearch-5.1.1.jar:5.1.1]
at org.elasticsearch.search.aggregations.AggregationPhase.preProcess(AggregationPhase.java:61) ~[elasticsearch-5.1.1.jar:5.1.1]
at org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:104) ~[elasticsearch-5.1.1.jar:5.1.1]
at org.elasticsearch.indices.IndicesService.lambda$loadIntoContext$18(IndicesService.java:1159) ~[elasticsearch-5.1.1.jar:5.1.1]
at org.elasticsearch.indices.IndicesService.lambda$cacheShardLevelResult$20(IndicesService.java:1229) ~[elasticsearch-5.1.1.jar:5.1.1]
at org.elasticsearch.indices.IndicesRequestCache$Loader.load(IndicesRequestCache.java:150) ~[elasticsearch-5.1.1.jar:5.1.1]
at org.elasticsearch.indices.IndicesRequestCache$Loader.load(IndicesRequestCache.java:133) ~[elasticsearch-5.1.1.jar:5.1.1]
at org.elasticsearch.common.cache.Cache.computeIfAbsent(Cache.java:398) ~[elasticsearch-5.1.1.jar:5.1.1]
at org.elasticsearch.indices.IndicesRequestCache.getOrCompute(IndicesRequestCache.java:116) ~[elasticsearch-5.1.1.jar:5.1.1]
at org.elasticsearch.indices.IndicesService.cacheShardLevelResult(IndicesService.java:1235) ~[elasticsearch-5.1.1.jar:5.1.1]
at org.elasticsearch.indices.IndicesService.loadIntoContext(IndicesService.java:1158) ~[elasticsearch-5.1.1.jar:5.1.1]
at org.elasticsearch.search.SearchService.loadOrExecuteQueryPhase(SearchService.java:257) ~[elasticsearch-5.1.1.jar:5.1.1]
at org.elasticsearch.search.SearchService.executeQueryPhase(SearchService.java:273) ~[elasticsearch-5.1.1.jar:5.1.1]
at org.elasticsearch.action.search.SearchTransportService$6.messageReceived(SearchTransportService.java:300) ~[elasticsearch-5.1.1.jar:5.1.1]
at org.elasticsearch.action.search.SearchTransportService$6.messageReceived(SearchTransportService.java:297) ~[elasticsearch-5.1.1.jar:5.1.1]
at org.elasticsearch.transport.RequestHandlerRegistry.processMessageReceived(RequestHandlerRegistry.java:69) ~[elasticsearch-5.1.1.jar:5.1.1]
at org.elasticsearch.transport.TransportService$6.doRun(TransportService.java:577) [elasticsearch-5.1.1.jar:5.1.1]
at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:527) [elasticsearch-5.1.1.jar:5.1.1]
at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37) [elasticsearch-5.1.1.jar:5.1.1]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_111]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_111]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_111]

我对集群运行状况进行了一次 curl (黄色,因为一个节点)

{
   "cluster_name":"Pixel",
   "status":"yellow",
   "timed_out":false,
   "number_of_nodes":1,
   "number_of_data_nodes":1,
   "active_primary_shards":11,
   "active_shards":11,
   "relocating_shards":0,
   "initializing_shards":0,
   "unassigned_shards":11,
   "delayed_unassigned_shards":0,
   "number_of_pending_tasks":0,
   "number_of_in_flight_fetch":0,
   "task_max_waiting_in_queue_millis":0,
   "active_shards_percent_as_number":50.0
}

有关该实例的更多信息: 它位于具有 100 GB EBS 的 m4.4xlarge 上。它还使用 32 GB 内存。到目前为止,一个索引中有 60 万条记录。

我还应该寻找什么?

我也喜欢碎片

pixel 1 p STARTED 130527 74.7mb 10.0.1.90 tqStC42
pixel 1 r UNASSIGNED 
pixel 3 p STARTED 129687 74.4mb 10.0.1.90 tqStC42
pixel 3 r UNASSIGNED 
pixel 2 p STARTED 130561 74mb 10.0.1.90 tqStC42
pixel 2 r UNASSIGNED 
pixel 4 p STARTED 129870 74.6mb 10.0.1.90 tqStC42
pixel 4 r UNASSIGNED 
pixel 0 p STARTED 129981 74.4mb 10.0.1.90 tqStC42
pixel 0 r UNASSIGNED

最佳答案

您收到的错误是因为您有一个聚合查询,可能是一个 termssignificant_termsgeohash_grid 查询,其中您已指定 "size": 0 以获得所有可能的术语。

这在 ES 2.x 及更早版本中是可能的,但是 not anymore since ES 5.x因为这会极大地损害性能。现在,如果您想获取给定字段的所有术语,则必须显式设置一个较高的数字,例如 "size": 1000 或任何对您有意义的数字,只需更大的数字即可比你的字段的基数。

关于amazon-web-services - Elasticsearch 阶段 : [query] 的所有分片均失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41623216/

相关文章:

node.js - 流式传输 zip 文件,通过管道解压,通过管道输出?

java - 通过 java sdk 在客户端使用联合用户凭据(或 IAM 用户)在单个调用中列出 amazon s3 存储桶上可用的所有对象/文件

elasticsearch - 无法打开 Elasticsearch-head 插件 - v2.1.1

elasticsearch - 按嵌套字段匹配的百分比对 ElasticSearch 结果进行排序

elasticsearch - ES基数未提供确切计数

elasticsearch - 测试 Elastic Search 时如何关闭缓存

elasticsearch - Elasticsearch Ngrams:自动完成的意外行为

amazon-web-services - 如何在使用 EMR/Hive 将数据从 S3 导入 DynamoDB 时处理引号 (CSV) 中的字段

amazon-web-services - AWS : The following resource(s) failed to create: [AWSEBAutoScalingGroup]

bash - 如何在用户数据bash代码中获取CloudFormation资源值