Elasticserach复制映射器中的不同类型错误

时间:2019-11-14 09:11:53

标签: elasticsearch

我得到

 mapper [countCalls] of different type, current_type [long], merged_type [text]

它发生在午夜左右,并且错误表明它是副本问题TransportReplicationAction $ PrimaryShardReference。没有用于映射此字段的设置,并且我没有任何默认映射。该字段为数组[“ name”:value]。

知道为什么吗?我没有任何其他错误,并且我在Kibana看到的事件没有问题。

这是完整的日志:

 [2019-11-11T00:02:51,566][DEBUG][o.e.a.b.TransportShardBulkAction] [xxx] [logstash-2019.11.10][0] 
failed to execute bulk item (index) index {[logstash-2019.11.10][_doc][pWKOV24BqMTbC P5UQ9uc], 
 source[{xxxxxxxx, "countCalls":[["i",0]]}]} java.lang.IllegalArgumentException: mapper [countCalls] 
 of different type, current_type [long], merged_type [text] at 
 org.elasticsearch.index.mapper.FieldMapper.doMerge(FieldMapper.java:330) ~[elasticsearch-        
 7.1.1.jar:7.1.1] at 
 org.elasticsearch.index.mapper.NumberFieldMapper.doMerge(NumberFieldMapper.java:1081) ~     
 [elasticsearch-7.1.1.jar:7.1.1] at 
 org.elasticsearch.index.mapper.FieldMapper.merge(FieldMapper.java:317) ~[elasticsearch-         
 7.1.1.jar:7.1.1] at org.elasticsearch.index.mapper.FieldMapper.merge(FieldMapper.java:52) ~ 
 [elasticsearch-7.1.1.jar:7.1.1] at 
 org.elasticsearch.index.mapper.DocumentParser.createDynamicUpdate(DocumentParser.java:223) ~     
 [elasticsearch-7.1.1.jar:7.1.1] at 
 org.elasticsearch.index.mapper.DocumentParser.parseDocument(DocumentParser.java:83) ~     
 [elasticsearch-7.1.1.jar:7.1.1] at 
 org.elasticsearch.index.mapper.DocumentMapper.parse(DocumentMapper.java:267) ~[elasticsearch 
 7.1.1.jar:7.1.1] at org.elasticsearch.index.shard.IndexShard.prepareIndex(IndexShard.java:770) ~ 
 [elasticsearch-7.1.1.jar:7.1.1] at 
 org.elasticsearch.index.shard.IndexShard.applyIndexOperation(IndexShard.java:747) ~[elasticsearch-     
 7.1.1.jar:7.1.1] at 
 org.elasticsearch.index.shard.IndexShard.applyIndexOperationOnPrimary(IndexShard.java:719) ~     
 [elasticsearch-7.1.1.jar:7.1.1] at org.elasticsearch.action.bulk.TransportShardBulkAction.lambda$executeIndexRequestOnPrimary$3(TransportShardBulkAction.java:452) ~[elasticsearch-7.1.1.jar:7.1.1] at org.elasticsearch.action.bulk.TransportShardBulkAction.executeOnPrimaryWhileHandlingMappingUpdates(TransportShardBulkAction.java:475) ~[elasticsearch-7.1.1.jar:7.1.1] at org.elasticsearch.action.bulk.TransportShardBulkAction.executeIndexRequestOnPrimary(TransportShardBulkAction.java:450) [elasticsearch-7.1.1.jar:7.1.1] at org.elasticsearch.action.bulk.TransportShardBulkAction.executeBulkItemRequest(TransportShardBulkAction.java:218) [elasticsearch-7.1.1.jar:7.1.1] at org.elasticsearch.action.bulk.TransportShardBulkAction.performOnPrimary(TransportShardBulkAction.java:161) [elasticsearch-7.1.1.jar:7.1.1] at org.elasticsearch.action.bulk.TransportShardBulkAction.performOnPrimary(TransportShardBulkAction.java:153) [elasticsearch-7.1.1.jar:7.1.1] at org.elasticsearch.action.bulk.TransportShardBulkAction.shardOperationOnPrimary(TransportShardBulkAction.java:141) [elasticsearch-7.1.1.jar:7.1.1] at org.elasticsearch.action.bulk.TransportShardBulkAction.shardOperationOnPrimary(TransportShardBulkAction.java:79) [elasticsearch-7.1.1.jar:7.1.1] at org.elasticsearch.action.support.replication.TransportReplicationAction$PrimaryShardReference.perform(TransportReplicationAction.java:1042) [elasticsearch-7.1.1.jar:7.1.1] at org.elasticsearch.action.support.replication.TransportReplicationAction$PrimaryShardReference.perform(TransportReplicationAction.java:1020) [elasticsearch-7.1.1.jar:7.1.1] at org.elasticsearch.action.support.replication.ReplicationOperation.execute(ReplicationOperation.java:104) [elasticsearch-7.1.1.jar:7.1.1] at org.elasticsearch.action.support.replication.TransportReplicationAction$AsyncPrimaryAction.runWithPrimaryShardReference(TransportReplicationAction.java:422) [elasticsearch-7.1.1. jar:7.1.1] at org.elasticsearch.action.support.replication.TransportReplicationAction$AsyncPrimaryAction.lambda$doRun$0(TransportReplicationAction.java:363) [elasticsearch-7.1.1.jar:7.1.1] at org.elasticsearch.action.ActionListener$1.onResponse(ActionListener.java:61) [elasticsearch-7.1.1.jar:7.1.1] at org.elasticsearch.index.shard.IndexShard.lambda$wrapPrimaryOperationPermitListener$14(IndexShard.java:2538) [elasticsearch-7.1.1.jar:7.1.1] at org.elasticsearch.action.ActionListener$1.onResponse(ActionListener.java:61) [elasticsearch-7.1.1.jar:7.1.1] at org.elasticsearch.index.shard.IndexShardOperationPermits.acquire(IndexShardOperationPermits.java:269) [elasticsearch-7.1.1.jar:7.1.1] at org.elasticsearch.index.shard.IndexShardOperationPermits.acquire(IndexShardOperationPermits.java:236) [elasticsearch-7.1.1.jar:7.1.1] at org.elasticsearch.index.shard.IndexShard.acquirePrimaryOperationPermit(IndexShard.java:2513) [elasticsearch-7.1.1.jar:7.1.1] at org.elasticsearch.action.support.replication.TransportReplicationAction.acquirePrimaryOperationPermit(TransportReplicationAction.java:979) [elasticsearch-7.1.1.jar:7.1.1] at org.elasticsearch.action.support.replication.TransportReplicationAction$AsyncPrimaryAction.doRun(TransportReplicationAction.java:359) [elasticsearch-7.1.1.jar:7.1.1] at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37) [elasticsearch-7.1.1.jar:7.1.1] at org.elasticsearch.action.support.replication.TransportReplicationAction$PrimaryOperationTransportHandler.messageReceived(TransportReplicationAction.java:314) [elasticsearch-7.1.1 .jar:7.1.1] at org.elasticsearch.action.support.replication.TransportReplicationAction$PrimaryOperationTransportHandler.messageReceived(TransportReplicationAction.java:306) [elasticsearch-7.1.1 .jar:7.1.1] at org.elasticsearch.xpack.security.transport.SecurityServerTransportInterceptor$ProfileSecuredRequestHandler$1.doRun(SecurityServerTransportInterceptor.java:251) [x-pack-security-7 .1.1.jar:7.1.1] at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37) [elasticsearch-7.1.1.jar:7.1.1]

1 个答案:

答案 0 :(得分:1)

当找到未在映射或模板中声明的新字段时,elasticsearch尝试自行解决类型,并为新字段分配数据类型。因此,它在countCalls内部找到了一个数值,并将其定义为long数据类型。然后,稍后一个新的提取实例尝试使用字段countCalls为文档建立索引,但是里面没有数字值,而是一个字符串。 Elastic尝试在字段中合并此值,但不能这样做,因为现在该字段已定义为long数据类型。解决此问题的最快方法是将映射中的字段定义为text数据类型。这样,数值将转换为文本数据类型。另一方面,您无法再对此字段进行range查询。所以问题是,对这个字段进行range查询是否有用?