Class MappingDefinition

java.lang.Object
io.jmix.search.index.mapping.MappingDefinition

public class MappingDefinition extends Object
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:

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