Package io.jmix.search.index.mapping
Class MappingDefinition
java.lang.Object
io.jmix.search.index.mapping.MappingDefinition
Contains information about indexed properties defined within index definition interface
marked with
JmixEntitySearchIndex
It can be created automatically according to field-mapping annotations used in index definition or manually within mapping method implementation. Such method should fulfil the following requirements:
- Annotated with
ManualMappingDefinition - with any name
- default
- With return type -
MappingDefinition - With Spring beans as parameters
builder(), StaticAttributesGroupConfiguration.builder()
and DynamicAttributesGroupConfiguration.builder() should be used to create content.
Example:
@JmixEntitySearchIndex(entity = Customer.class)
public interface CustomerIndexDefinition {
@ManualMappingDefinition
default MappingDefinition mapping(AutoMappingStrategy autoMappingStrategy,
SimplePropertyValueExtractor simplePropertyValueExtractor) {
return MappingDefinition.builder()
.addStaticAttributesGroup(
StaticAttributesGroupConfiguration.builder()
.includeProperties("*")
.excludeProperties("name", "description")
.withFieldMappingStrategyClass(AutoMappingStrategy.class)
.build()
)
.addStaticAttributesGroup(
StaticAttributesGroupConfiguration.builder()
.includeProperties("name")
.withFieldMappingStrategy(autoMappingStrategy)
.withFieldConfiguration(
"{\n" +
" \"type\": \"text\",\n" +
" \"analyzer\": \"standard\",\n" +
" \"boost\": 2\n" +
"}"
)
.build()
)
.addStaticAttributesGroup(
StaticAttributesGroupConfiguration.builder()
.includeProperties("description")
.withFieldConfiguration(
"{\n" +
" \"type\": \"text\",\n" +
" \"analyzer\": \"english\"\n" +
"}"
)
.withPropertyValueExtractor(simplePropertyValueExtractor)
.withOrder(1)
.build()
)
.addDynamicAttributesGroup(
DynamicAttributesGroupConfiguration.builder()
.excludeProperties("prefix1*")
.excludeCategories("categoryPrefix1*")
.withFieldMappingStrategyClass(AutoMappingStrategy.class)
.build()
)
.addDynamicAttributesGroup(
DynamicAttributesGroupConfiguration.builder()
.excludeProperties("prefix2*", "*infix*")
.withReferenceAttributesIndexingMode(ReferenceAttributesIndexingMode.NONE)
.addParameter("analyzer", "english")
.withPropertyValueExtractor(simplePropertyValueExtractor)
.withFieldConfiguration(
"{\n" +
" \"type\": \"text\",\n" +
" \"analyzer\": \"english\"\n" +
"}"
) *
.build()
)
.build();
}
}
Note: if definition method has implementation any field-mapping annotations on it will be ignored
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected Map<Class<? extends AttributesGroupConfiguration>,List<? extends AttributesGroupConfiguration>> -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected -
Method Summary
Modifier and TypeMethodDescriptionbuilder()Deprecated.<T extends AttributesGroupConfiguration>
List<T>getMappingConfigurations(Class<T> configurationType)
-
Field Details
-
attributesGroupConfigurationMap
protected Map<Class<? extends AttributesGroupConfiguration>,List<? extends AttributesGroupConfiguration>> attributesGroupConfigurationMap
-
-
Constructor Details
-
MappingDefinition
-
-
Method Details
-
getElements
Deprecated.use thegetMappingConfigurations(Class)}Gets allStaticAttributesGroupConfiguration- Returns:
- List of
MappingDefinitionElement
-
getMappingConfigurations
public <T extends AttributesGroupConfiguration> List<T> getMappingConfigurations(Class<T> configurationType) -
builder
-
getMappingConfigurations(Class)}