fix(cloudext): fix elasticsearch mapping for date type (#136)

This commit is contained in:
baifuyu 2024-03-05 13:35:27 +08:00 committed by GitHub
parent 258b0e7dfb
commit c2963a6a91
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 21 additions and 11 deletions

View File

@ -41,7 +41,8 @@ public class EsMapping extends BaseValObj {
Map<String, PropertyConfig> properties = new HashMap<>();
for (IdxField idxField : idxMapping.getIdxFields()) {
properties.put(idxField.getName(), new PropertyConfig("text"));
properties.put(
idxField.getName(), new PropertyConfig(idxField.getBasicType().name().toLowerCase()));
}
return new EsMapping(properties);
}

View File

@ -22,6 +22,8 @@ import com.antgroup.openspg.cloudext.interfaces.searchengine.model.idx.schema.Id
import com.antgroup.openspg.core.schema.model.SPGSchema;
import com.antgroup.openspg.core.schema.model.alter.AlterOperationEnum;
import com.antgroup.openspg.core.schema.model.type.BaseSPGType;
import com.antgroup.openspg.core.schema.model.type.BasicTypeEnum;
import com.antgroup.openspg.core.schema.model.type.SPGTypeRef;
import com.google.common.collect.Lists;
import java.util.ArrayList;
import java.util.Collections;
@ -124,7 +126,19 @@ public class SPGSchema2IdxServiceImpl implements SPGSchema2IdxService {
}
private IdxSchema toIndexSchema(BaseSPGType spgType) {
// es支持动态schema这里不传入mapping由es自己判断
return new IdxSchema(spgType.getName(), null);
IdxMapping idxMapping =
new IdxMapping(
spgType.getProperties().stream()
.map(x -> new IdxField(x.getName(), toBasicType(x.getObjectTypeRef())))
.collect(Collectors.toList()));
return new IdxSchema(spgType.getName(), idxMapping);
}
private BasicTypeEnum toBasicType(SPGTypeRef spgTypeRef) {
if (spgTypeRef.isBasicType()) {
return BasicTypeEnum.from(spgTypeRef.getName());
} else {
return BasicTypeEnum.TEXT;
}
}
}

View File

@ -17,6 +17,7 @@ package com.antgroup.openspg.cloudext.interfaces.searchengine.impl
import com.antgroup.openspg.cloudext.interfaces.searchengine.BaseIdxSearchEngineClient
import com.antgroup.openspg.cloudext.interfaces.searchengine.adapter.schema.SPGSchema2IdxService
import com.antgroup.openspg.cloudext.interfaces.searchengine.adapter.schema.impl.SPGSchema2IdxServiceImpl
import com.antgroup.openspg.cloudext.interfaces.searchengine.model.idx.schema.IdxField
import com.antgroup.openspg.cloudext.interfaces.searchengine.model.idx.schema.IdxMapping
import com.antgroup.openspg.cloudext.interfaces.searchengine.model.idx.schema.IdxSchema
import com.antgroup.openspg.common.util.StringUtils
@ -27,13 +28,7 @@ import com.antgroup.openspg.core.schema.model.identifier.PredicateIdentifier
import com.antgroup.openspg.core.schema.model.identifier.SPGTypeIdentifier
import com.antgroup.openspg.core.schema.model.predicate.Property
import com.antgroup.openspg.core.schema.model.predicate.PropertyAdvancedConfig
import com.antgroup.openspg.core.schema.model.type.BaseSPGType
import com.antgroup.openspg.core.schema.model.type.EntityType
import com.antgroup.openspg.core.schema.model.type.ParentTypeInfo
import com.antgroup.openspg.core.schema.model.type.SPGTypeAdvancedConfig
import com.antgroup.openspg.core.schema.model.type.SPGTypeEnum
import com.antgroup.openspg.core.schema.model.type.SPGTypeRef
import com.antgroup.openspg.schema.model.type.*
import com.antgroup.openspg.core.schema.model.type.*
import com.google.common.collect.Lists
import com.google.common.collect.Sets
import spock.lang.Specification
@ -156,7 +151,7 @@ class SPGSchema2IdxServiceTest extends Specification {
{
add(new IdxSchema(
SPG_TYPE_UNIQUE_NAME,
new IdxMapping(Lists.newArrayList())
new IdxMapping(Lists.newArrayList(new IdxField("id", BasicTypeEnum.TEXT)))
))
}
}