elasticsearch - Mapping for Different Type of Properties -
in application have class extended 2 other classes. 2 other classes serialized in json , indexed on elasticsearch.
the problem i'm facing 2 classes extending first 1 present property same name different types (one string , other 1 object) follows:
{ "property1" : "a string", "property2" : "another string" } { "property1" : "this ok first 1 string too", "property2" : { "propertyfromproperty2" : "this not ok" } }
when indexing receive following exception:
org.elasticsearch.index.mapper.mapperparsingexception: failed parse [property2] @ org.elasticsearch.index.mapper.core.abstractfieldmapper.parse(abstractfieldmapper.java:418) @ org.elasticsearch.index.mapper.object.objectmapper.serializeobject(objectmapper.java:517) @ org.elasticsearch.index.mapper.object.objectmapper.parse(objectmapper.java:459) @ org.elasticsearch.index.mapper.object.objectmapper.serializeobject(objectmapper.java:517) @ org.elasticsearch.index.mapper.object.objectmapper.parse(objectmapper.java:459) @ org.elasticsearch.index.mapper.object.objectmapper.serializeobject(objectmapper.java:517) @ org.elasticsearch.index.mapper.object.objectmapper.parse(objectmapper.java:459) @ org.elasticsearch.index.mapper.object.objectmapper.serializeobject(objectmapper.java:517) @ org.elasticsearch.index.mapper.object.objectmapper.parse(objectmapper.java:459) @ org.elasticsearch.index.mapper.documentmapper.parse(documentmapper.java:515) @ org.elasticsearch.index.mapper.documentmapper.parse(documentmapper.java:462) @ org.elasticsearch.index.shard.service.internalindexshard.preparecreate(internalindexshard.java:363) @ org.elasticsearch.action.index.transportindexaction.shardoperationonprimary(transportindexaction.java:215) @ org.elasticsearch.action.support.replication.transportshardreplicationoperationaction$asyncshardoperationaction.performonprimary(transportshardreplicationoperationaction.java:556) @ org.elasticsearch.action.support.replication.transportshardreplicationoperationaction$asyncshardoperationaction$1.run(transportshardreplicationoperationaction.java:426) @ java.util.concurrent.threadpoolexecutor$worker.runtask(threadpoolexecutor.java:886) @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:908) @ java.lang.thread.run(thread.java:662) caused by: org.elasticsearch.elasticsearchillegalargumentexception: unknown property [propertyfromproperty2] @ org.elasticsearch.index.mapper.core.stringfieldmapper.parsecreatefieldforstring(stringfieldmapper.java:331) @ org.elasticsearch.index.mapper.core.stringfieldmapper.parsecreatefield(stringfieldmapper.java:277) @ org.elasticsearch.index.mapper.core.abstractfieldmapper.parse(abstractfieldmapper.java:408)
what options here? though maybe use field type name in order avoid parsing errors, possible using elasticsearch?
is there solution therefore?
as said, cannot that. after first indexing request, property2
got type string
.
when attempting second indexing request, trying index same property2
of type object
.
this means different field types same field. not possible in elasticsearch.
as options: make first indexing request match object
well. maybe this, don't know specifics of use case:
{ "property1" : "a string", "property2" : { "something" : "another string" } }
Comments
Post a Comment