У меня есть поле в индексе Elasticsearch с последующим отображениемElasticsearch 2,3 Geo тип формы отображения
"cluster_boundary": {
"type": "geo_shape",
"tree": "quadtree",
"precision": "1mm"
}
, но когда я ставлю это отображение в индексе elasticsearch я получаю следующую ошибку
java.lang.IllegalArgumentException: maxLevels of 36 exceeds limit of 29
at org.apache.lucene.spatial.prefix.tree.PackedQuadPrefixTree.<init>(PackedQuadPrefixTree.java:70)
at org.elasticsearch.index.mapper.geo.GeoShapeFieldMapper$GeoShapeFieldType.freeze(GeoShapeFieldMapper.java:276)
at org.elasticsearch.index.mapper.FieldMapper.<init>(FieldMapper.java:289)
at org.elasticsearch.index.mapper.geo.GeoShapeFieldMapper.<init>(GeoShapeFieldMapper.java:428)
at org.elasticsearch.index.mapper.geo.GeoShapeFieldMapper$Builder.build(GeoShapeFieldMapper.java:160)
at org.elasticsearch.index.mapper.geo.GeoShapeFieldMapper$Builder.build(GeoShapeFieldMapper.java:119)
at org.elasticsearch.index.mapper.object.ObjectMapper$Builder.build(ObjectMapper.java:167)
at org.elasticsearch.index.mapper.DocumentMapper$Builder.<init>(DocumentMapper.java:88)
at org.elasticsearch.index.mapper.MapperBuilders.doc(MapperBuilders.java:44)
at org.elasticsearch.index.mapper.DocumentMapperParser.parse(DocumentMapperParser.java:118)
at org.elasticsearch.index.mapper.DocumentMapperParser.parse(DocumentMapperParser.java:99)
at org.elasticsearch.index.mapper.MapperService.parse(MapperService.java:498)
at org.elasticsearch.cluster.metadata.MetaDataMappingService$PutMappingExecutor.applyRequest(MetaDataMappingService.java:257)
at org.elasticsearch.cluster.metadata.MetaDataMappingService$PutMappingExecutor.execute(MetaDataMappingService.java:230)
at org.elasticsearch.cluster.service.InternalClusterService.runTasksForExecutor(InternalClusterService.java:468)
at org.elasticsearch.cluster.service.InternalClusterService$UpdateTask.run(InternalClusterService.java:772)
at org.elasticsearch.common.util.concurrent.PrioritizedEsThreadPoolExecutor$TieBreakingPrioritizedRunnable.runAndClean(PrioritizedEsThreadPoolExecutor.java:231)
at org.elasticsearch.common.util.concurrent.PrioritizedEsThreadPoolExecutor$TieBreakingPrioritizedRunnable.run(PrioritizedEsThreadPoolExecutor.java:194)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Если Я меняю quadtree
на geohash
, он работает. И, согласно elasticsearch, максимальный допустимый уровень деревьев в quadtree
равен 50
.
Спасибо за ответ. Согласно документации elasticsearch '' 'quadtree''' имеет максимум 50 уровней. На основании того, что вы говорите, документация кажется неправильной. Я попробую использовать '' 'legacyquadtree'''. Я пробовал точность '' '1m''', а уровень дерева' '' 33'''. –