@Test public void define_fields() { NewIndex index = new NewIndex("issues", defaultSettingsConfiguration); NewIndex.NewIndexType mapping = index.createType("issue"); mapping.setAttribute("dynamic", "true"); mapping.setProperty("foo_field", ImmutableMap.of("type", "keyword")); mapping.createBooleanField("boolean_field"); mapping.createByteField("byte_field"); mapping.createDateTimeField("dt_field"); mapping.createDoubleField("double_field"); mapping.createIntegerField("int_field"); mapping.createLongField("long_field"); mapping.createShortField("short_field"); mapping.createUuidPathField("uuid_path_field"); mapping = index.getTypes().get("issue"); assertThat(mapping).isNotNull(); assertThat(mapping.getAttributes().get("dynamic")).isEqualTo("true"); assertThat(mapping.getProperty("foo_field")).isInstanceOf(Map.class); assertThat((Map) mapping.getProperty("foo_field")).containsEntry("type", "keyword"); assertThat((Map) mapping.getProperty("byte_field")).isNotEmpty(); assertThat((Map) mapping.getProperty("double_field")).isNotEmpty(); assertThat((Map) mapping.getProperty("dt_field")).isNotEmpty(); assertThat((Map) mapping.getProperty("int_field")).containsEntry("type", "integer"); assertThat((Map) mapping.getProperty("long_field")).isNotEmpty(); assertThat((Map) mapping.getProperty("short_field")).isNotEmpty(); assertThat((Map) mapping.getProperty("uuid_path_field")).isNotEmpty(); assertThat((Map) mapping.getProperty("unknown")).isNull(); }
NewIndex index = new NewIndex("issues", defaultSettingsConfiguration); NewIndex.NewIndexType mapping = index.createType("issue"); mapping.keywordFieldBuilder("basic_field").build(); mapping.keywordFieldBuilder("not_searchable_field").disableSearch().build(); mapping.keywordFieldBuilder("all_capabilities_field") .addSubFields( DefaultIndexSettingsElement.SEARCH_GRAMS_ANALYZER, DefaultIndexSettingsElement.SORTABLE_ANALYZER) .build(); mapping.keywordFieldBuilder("dumb_text_storage") .disableSearch() .disableNorms() Map<String, Object> props = (Map) mapping.getProperty("basic_field"); assertThat(props.get("type")).isEqualTo("keyword"); assertThat(props.get("index")).isEqualTo("true"); assertThat(props.get("fields")).isNull(); props = (Map) mapping.getProperty("not_searchable_field"); assertThat(props.get("type")).isEqualTo("keyword"); assertThat(props.get("index")).isEqualTo("false"); props = (Map) mapping.getProperty("all_capabilities_field"); assertThat(props.get("type")).isEqualTo("keyword"); props = (Map) mapping.getProperty("dumb_text_storage"); assertThat(props.get("type")).isEqualTo("keyword"); assertThat(props.get("index")).isEqualTo("false");
@Test public void index_requires_project_authorization() { NewIndex index = new NewIndex("issues", defaultSettingsConfiguration); index.createType("issue") // creates a second type "authorization" and configures _parent and _routing fields .requireProjectAuthorization(); // issue type NewIndex.NewIndexType issueType = index.getTypes().get("issue"); assertThat(getAttributeAsMap(issueType, "_parent")).containsExactly(entry("type", "authorization")); assertThat(getAttributeAsMap(issueType, "_routing")).containsExactly(entry("required", true)); // authorization type NewIndex.NewIndexType authorizationType = index.getTypes().get("authorization"); assertThat(getAttributeAsMap(authorizationType, "_parent")).isNull(); assertThat(getAttributeAsMap(authorizationType, "_routing")).containsExactly(entry("required", true)); }
activeRuleMapping.setEnableSource(enableSource); activeRuleMapping.setAttribute("_parent", ImmutableMap.of("type", INDEX_TYPE_RULE.getType())); activeRuleMapping.keywordFieldBuilder(FIELD_ACTIVE_RULE_ID).disableNorms().build(); activeRuleMapping.keywordFieldBuilder(FIELD_ACTIVE_RULE_RULE_ID).disableNorms().build(); activeRuleMapping.keywordFieldBuilder(FIELD_ACTIVE_RULE_PROFILE_UUID).disableNorms().build(); activeRuleMapping.keywordFieldBuilder(FIELD_ACTIVE_RULE_INHERITANCE).disableNorms().build(); activeRuleMapping.keywordFieldBuilder(FIELD_ACTIVE_RULE_SEVERITY).disableNorms().build(); ruleExtensionType.setEnableSource(enableSource); ruleExtensionType.setAttribute("_parent", ImmutableMap.of("type", INDEX_TYPE_RULE.getType())); ruleExtensionType.keywordFieldBuilder(FIELD_RULE_EXTENSION_SCOPE).disableNorms().build(); ruleExtensionType.keywordFieldBuilder(FIELD_RULE_EXTENSION_TAGS).build(); ruleMapping.setEnableSource(enableSource); ruleMapping.keywordFieldBuilder(FIELD_RULE_ID).disableNorms().build(); ruleMapping.keywordFieldBuilder(FIELD_RULE_KEY).addSubFields(SORTABLE_ANALYZER).build(); ruleMapping.keywordFieldBuilder(FIELD_RULE_RULE_KEY).addSubFields(SORTABLE_ANALYZER).build(); ruleMapping.keywordFieldBuilder(FIELD_RULE_REPOSITORY).build(); ruleMapping.keywordFieldBuilder(FIELD_RULE_INTERNAL_KEY).disableNorms().disableSearch().build(); ruleMapping.keywordFieldBuilder(FIELD_RULE_NAME).addSubFields(SORTABLE_ANALYZER, SEARCH_GRAMS_ANALYZER).build(); ruleMapping.keywordFieldBuilder(FIELD_RULE_HTML_DESCRIPTION) .disableSearch() .disableNorms() .addSubFields(ENGLISH_HTML_ANALYZER)
type.requireProjectAuthorization(); type.setEnableSource(enableSource); type.keywordFieldBuilder(FIELD_ISSUE_ASSIGNEE_UUID).disableNorms().addSubFields(SORTABLE_ANALYZER).build(); type.keywordFieldBuilder(FIELD_ISSUE_AUTHOR_LOGIN).disableNorms().build(); type.keywordFieldBuilder(FIELD_ISSUE_COMPONENT_UUID).disableNorms().build(); type.createLongField(FIELD_ISSUE_EFFORT); type.keywordFieldBuilder(FIELD_ISSUE_FILE_PATH).disableNorms().addSubFields(SORTABLE_ANALYZER).build(); type.createDateTimeField(FIELD_ISSUE_FUNC_CREATED_AT); type.createDateTimeField(FIELD_ISSUE_FUNC_UPDATED_AT); type.createDateTimeField(FIELD_ISSUE_FUNC_CLOSED_AT); type.keywordFieldBuilder(FIELD_ISSUE_KEY).disableNorms().addSubFields(SORTABLE_ANALYZER).build(); type.keywordFieldBuilder(FIELD_ISSUE_LANGUAGE).disableNorms().build(); type.createIntegerField(FIELD_ISSUE_LINE); type.keywordFieldBuilder(FIELD_ISSUE_MODULE_UUID).disableNorms().build(); type.createUuidPathField(FIELD_ISSUE_MODULE_PATH); type.keywordFieldBuilder(FIELD_ISSUE_ORGANIZATION_UUID).disableNorms().build(); type.keywordFieldBuilder(FIELD_ISSUE_PROJECT_UUID).disableNorms().addSubFields(SORTABLE_ANALYZER).build(); type.keywordFieldBuilder(FIELD_ISSUE_BRANCH_UUID).disableNorms().build(); type.createBooleanField(FIELD_ISSUE_IS_MAIN_BRANCH); type.keywordFieldBuilder(FIELD_ISSUE_DIRECTORY_PATH).disableNorms().build(); type.keywordFieldBuilder(FIELD_ISSUE_RESOLUTION).disableNorms().build(); type.keywordFieldBuilder(FIELD_ISSUE_RULE_ID).disableNorms().build(); type.keywordFieldBuilder(FIELD_ISSUE_SEVERITY).disableNorms().build(); type.createByteField(FIELD_ISSUE_SEVERITY_VALUE); type.keywordFieldBuilder(FIELD_ISSUE_STATUS).disableNorms().addSubFields(SORTABLE_ANALYZER).build(); type.keywordFieldBuilder(FIELD_ISSUE_TAGS).disableNorms().build(); type.keywordFieldBuilder(FIELD_ISSUE_TYPE).disableNorms().build();
.requireProjectAuthorization(); mapping.keywordFieldBuilder(FIELD_UUID).disableNorms().build(); mapping.keywordFieldBuilder(FIELD_ORGANIZATION_UUID).disableNorms().build(); mapping.keywordFieldBuilder(FIELD_KEY).disableNorms().addSubFields(SORTABLE_ANALYZER).build(); mapping.keywordFieldBuilder(FIELD_NAME).addSubFields(SORTABLE_ANALYZER, SEARCH_GRAMS_ANALYZER).build(); mapping.keywordFieldBuilder(FIELD_QUALITY_GATE_STATUS).build(); mapping.keywordFieldBuilder(FIELD_TAGS).build(); mapping.keywordFieldBuilder(FIELD_LANGUAGES).build(); mapping.nestedFieldBuilder(FIELD_MEASURES) .addKeywordField(FIELD_MEASURES_KEY) .addDoubleField(FIELD_MEASURES_VALUE) .build(); mapping.nestedFieldBuilder(FIELD_NCLOC_LANGUAGE_DISTRIBUTION) .addKeywordField(FIELD_DISTRIB_LANGUAGE) .addIntegerField(FIELD_DISTRIB_NCLOC) .build(); mapping.createDateTimeField(FIELD_ANALYSED_AT); mapping.setEnableSource(false);
@Override public void define(IndexDefinitionContext context) { NewIndex index = context.create( INDEX_TYPE_COMPONENT.getIndex(), newBuilder(config) .setRefreshInterval(MANUAL_REFRESH_INTERVAL) .setDefaultNbOfShards(DEFAULT_NUMBER_OF_SHARDS) .build()); NewIndex.NewIndexType mapping = index.createType(INDEX_TYPE_COMPONENT.getType()) .requireProjectAuthorization(); mapping.keywordFieldBuilder(FIELD_UUID).disableNorms().build(); mapping.keywordFieldBuilder(FIELD_PROJECT_UUID).disableNorms().build(); mapping.keywordFieldBuilder(FIELD_KEY).addSubFields(SORTABLE_ANALYZER).build(); mapping.textFieldBuilder(FIELD_NAME) .withFieldData() .termVectorWithPositionOffsets() .addSubFields(NAME_ANALYZERS) .build(); mapping.keywordFieldBuilder(FIELD_QUALIFIER).build(); mapping.keywordFieldBuilder(FIELD_LANGUAGE).disableNorms().build(); mapping.keywordFieldBuilder(FIELD_ORGANIZATION_UUID).disableNorms().build(); } }
@Override public void define(IndexDefinitionContext context) { NewIndex index = context.create( INDEX_TYPE_TEST.getIndex(), newBuilder(config) .setRefreshInterval(MANUAL_REFRESH_INTERVAL) .setDefaultNbOfShards(5) .build()); NewIndex.NewIndexType mapping = index.createType(INDEX_TYPE_TEST.getType()); mapping.setAttribute("_routing", ImmutableMap.of("required", true)); mapping.keywordFieldBuilder(FIELD_PROJECT_UUID).disableNorms().build(); mapping.keywordFieldBuilder(FIELD_FILE_UUID).disableNorms().build(); mapping.keywordFieldBuilder(FIELD_TEST_UUID).disableNorms().build(); mapping.keywordFieldBuilder(FIELD_NAME).disableNorms().disableSearch().disableSortingAndAggregating().build(); mapping.keywordFieldBuilder(FIELD_STATUS).disableNorms().disableSearch().build(); mapping.createLongField(FIELD_DURATION_IN_MS); mapping.keywordFieldBuilder(FIELD_MESSAGE).disableNorms().disableSearch().disableSortingAndAggregating().build(); mapping.keywordFieldBuilder(FIELD_STACKTRACE).disableNorms().disableSearch().disableSortingAndAggregating().build(); mapping.setProperty(FIELD_COVERED_FILES, ImmutableMap.of("type", "nested", "properties", ImmutableMap.of( FIELD_COVERED_FILE_UUID, ImmutableMap.of("type", FIELD_TYPE_KEYWORD, "index", INDEX_SEARCHABLE), FIELD_COVERED_FILE_LINES, ImmutableMap.of("type", "integer")))); mapping.createDateTimeField(FIELD_UPDATED_AT); } }
/** * Creates a type that requires to verify that user has the read permission * when searching for documents. * It relies on a parent type named "authorization" that is automatically * populated by {@link org.sonar.server.permission.index.PermissionIndexer}. * * Both types {@code typeName} and "authorization" are created. Documents * must be created with _parent and _routing having the parent uuid as values. * * @see NewIndex.NewIndexType#requireProjectAuthorization() */ public static NewIndex.NewIndexType enableProjectAuthorization(NewIndex.NewIndexType type) { type.setAttribute("_parent", ImmutableMap.of("type", TYPE_AUTHORIZATION)); type.setAttribute("_routing", ImmutableMap.of("required", true)); NewIndex.NewIndexType authType = type.getIndex().createType(TYPE_AUTHORIZATION); authType.setAttribute("_routing", ImmutableMap.of("required", true)); authType.createLongField(FIELD_GROUP_IDS); authType.createLongField(FIELD_USER_IDS); authType.createBooleanField(FIELD_ALLOW_ANYONE); authType.setEnableSource(false); return type; }
@Override public void define(IndexDefinitionContext context) { NewIndex index = context.create(INDEX_TYPE_USER.getIndex(), newBuilder(config) .setDefaultNbOfShards(1) .build()); // type "user" NewIndex.NewIndexType mapping = index.createType(INDEX_TYPE_USER.getType()); mapping.keywordFieldBuilder(FIELD_UUID).disableNorms().build(); mapping.keywordFieldBuilder(FIELD_LOGIN).addSubFields(USER_SEARCH_GRAMS_ANALYZER).build(); mapping.keywordFieldBuilder(FIELD_NAME).addSubFields(USER_SEARCH_GRAMS_ANALYZER).build(); mapping.keywordFieldBuilder(FIELD_EMAIL).addSubFields(USER_SEARCH_GRAMS_ANALYZER, SORTABLE_ANALYZER).build(); mapping.createBooleanField(FIELD_ACTIVE); mapping.keywordFieldBuilder(FIELD_SCM_ACCOUNTS).disableNorms().addSubFields(SORTABLE_ANALYZER).build(); mapping.keywordFieldBuilder(FIELD_ORGANIZATION_UUIDS).disableNorms().build(); } }
@Override public void define(IndexDefinitionContext context) { NewIndex index = context.create( INDEX_TYPE_VIEW.getIndex(), newBuilder(config) .setDefaultNbOfShards(5) .build()); // type "view" NewIndex.NewIndexType mapping = index.createType(INDEX_TYPE_VIEW.getType()); mapping.keywordFieldBuilder(FIELD_UUID).disableNorms().build(); mapping.keywordFieldBuilder(FIELD_PROJECTS).disableNorms().build(); } }
private IndexType(NewIndex.NewIndexType newType) { this.name = newType.getName(); this.attributes = ImmutableMap.copyOf(newType.getAttributes()); }
public void define(IndexDefinitionContext context) { NewIndex index = context.create( INDEX_TYPE_METADATA.getIndex(), newBuilder(configuration) .setRefreshInterval(MANUAL_REFRESH_INTERVAL) .setDefaultNbOfShards(DEFAULT_NUMBER_OF_SHARDS) .build()); NewIndex.NewIndexType mapping = index.createType(INDEX_TYPE_METADATA.getType()); mapping.keywordFieldBuilder(FIELD_VALUE).disableSearch().store().build(); } }
activeRuleMapping.setEnableSource(enableSource); activeRuleMapping.setAttribute("_parent", ImmutableMap.of("type", INDEX_TYPE_RULE.getType())); activeRuleMapping.keywordFieldBuilder(FIELD_ACTIVE_RULE_ID).disableNorms().build(); activeRuleMapping.keywordFieldBuilder(FIELD_ACTIVE_RULE_RULE_ID).disableNorms().build(); activeRuleMapping.keywordFieldBuilder(FIELD_ACTIVE_RULE_PROFILE_UUID).disableNorms().build(); activeRuleMapping.keywordFieldBuilder(FIELD_ACTIVE_RULE_INHERITANCE).disableNorms().build(); activeRuleMapping.keywordFieldBuilder(FIELD_ACTIVE_RULE_SEVERITY).disableNorms().build(); ruleExtensionType.setEnableSource(enableSource); ruleExtensionType.setAttribute("_parent", ImmutableMap.of("type", INDEX_TYPE_RULE.getType())); ruleExtensionType.keywordFieldBuilder(FIELD_RULE_EXTENSION_SCOPE).disableNorms().build(); ruleExtensionType.keywordFieldBuilder(FIELD_RULE_EXTENSION_TAGS).build(); ruleMapping.setEnableSource(enableSource); ruleMapping.keywordFieldBuilder(FIELD_RULE_ID).disableNorms().build(); ruleMapping.keywordFieldBuilder(FIELD_RULE_KEY).addSubFields(SORTABLE_ANALYZER).build(); ruleMapping.keywordFieldBuilder(FIELD_RULE_RULE_KEY).addSubFields(SORTABLE_ANALYZER).build(); ruleMapping.keywordFieldBuilder(FIELD_RULE_REPOSITORY).build(); ruleMapping.keywordFieldBuilder(FIELD_RULE_INTERNAL_KEY).disableNorms().disableSearch().build(); ruleMapping.keywordFieldBuilder(FIELD_RULE_NAME).addSubFields(SORTABLE_ANALYZER, SEARCH_GRAMS_ANALYZER).build(); ruleMapping.keywordFieldBuilder(FIELD_RULE_HTML_DESCRIPTION) .disableSearch() .disableNorms() .addSubFields(ENGLISH_HTML_ANALYZER)
type.requireProjectAuthorization(); type.setEnableSource(enableSource); type.keywordFieldBuilder(FIELD_ISSUE_ASSIGNEE_UUID).disableNorms().addSubFields(SORTABLE_ANALYZER).build(); type.keywordFieldBuilder(FIELD_ISSUE_AUTHOR_LOGIN).disableNorms().build(); type.keywordFieldBuilder(FIELD_ISSUE_COMPONENT_UUID).disableNorms().build(); type.createLongField(FIELD_ISSUE_EFFORT); type.keywordFieldBuilder(FIELD_ISSUE_FILE_PATH).disableNorms().addSubFields(SORTABLE_ANALYZER).build(); type.createDateTimeField(FIELD_ISSUE_FUNC_CREATED_AT); type.createDateTimeField(FIELD_ISSUE_FUNC_UPDATED_AT); type.createDateTimeField(FIELD_ISSUE_FUNC_CLOSED_AT); type.keywordFieldBuilder(FIELD_ISSUE_KEY).disableNorms().addSubFields(SORTABLE_ANALYZER).build(); type.keywordFieldBuilder(FIELD_ISSUE_LANGUAGE).disableNorms().build(); type.createIntegerField(FIELD_ISSUE_LINE); type.keywordFieldBuilder(FIELD_ISSUE_MODULE_UUID).disableNorms().build(); type.createUuidPathField(FIELD_ISSUE_MODULE_PATH); type.keywordFieldBuilder(FIELD_ISSUE_ORGANIZATION_UUID).disableNorms().build(); type.keywordFieldBuilder(FIELD_ISSUE_PROJECT_UUID).disableNorms().addSubFields(SORTABLE_ANALYZER).build(); type.keywordFieldBuilder(FIELD_ISSUE_BRANCH_UUID).disableNorms().build(); type.createBooleanField(FIELD_ISSUE_IS_MAIN_BRANCH); type.keywordFieldBuilder(FIELD_ISSUE_DIRECTORY_PATH).disableNorms().build(); type.keywordFieldBuilder(FIELD_ISSUE_RESOLUTION).disableNorms().build(); type.keywordFieldBuilder(FIELD_ISSUE_RULE_ID).disableNorms().build(); type.keywordFieldBuilder(FIELD_ISSUE_SEVERITY).disableNorms().build(); type.createByteField(FIELD_ISSUE_SEVERITY_VALUE); type.keywordFieldBuilder(FIELD_ISSUE_STATUS).disableNorms().addSubFields(SORTABLE_ANALYZER).build(); type.keywordFieldBuilder(FIELD_ISSUE_TAGS).disableNorms().build(); type.keywordFieldBuilder(FIELD_ISSUE_TYPE).disableNorms().build(); type.keywordFieldBuilder(FIELD_ISSUE_OWASP_TOP_10).disableNorms().build();
.requireProjectAuthorization(); mapping.keywordFieldBuilder(FIELD_UUID).disableNorms().build(); mapping.keywordFieldBuilder(FIELD_ORGANIZATION_UUID).disableNorms().build(); mapping.keywordFieldBuilder(FIELD_KEY).disableNorms().addSubFields(SORTABLE_ANALYZER).build(); mapping.keywordFieldBuilder(FIELD_NAME).addSubFields(SORTABLE_ANALYZER, SEARCH_GRAMS_ANALYZER).build(); mapping.keywordFieldBuilder(FIELD_QUALITY_GATE_STATUS).build(); mapping.keywordFieldBuilder(FIELD_TAGS).build(); mapping.keywordFieldBuilder(FIELD_LANGUAGES).build(); mapping.nestedFieldBuilder(FIELD_MEASURES) .addKeywordField(FIELD_MEASURES_KEY) .addDoubleField(FIELD_MEASURES_VALUE) .build(); mapping.nestedFieldBuilder(FIELD_NCLOC_LANGUAGE_DISTRIBUTION) .addKeywordField(FIELD_DISTRIB_LANGUAGE) .addIntegerField(FIELD_DISTRIB_NCLOC) .build(); mapping.createDateTimeField(FIELD_ANALYSED_AT); mapping.setEnableSource(false);
@Override public void define(IndexDefinitionContext context) { NewIndex index = context.create( INDEX_TYPE_COMPONENT.getIndex(), newBuilder(config) .setRefreshInterval(MANUAL_REFRESH_INTERVAL) .setDefaultNbOfShards(DEFAULT_NUMBER_OF_SHARDS) .build()); NewIndex.NewIndexType mapping = index.createType(INDEX_TYPE_COMPONENT.getType()) .requireProjectAuthorization(); mapping.keywordFieldBuilder(FIELD_UUID).disableNorms().build(); mapping.keywordFieldBuilder(FIELD_PROJECT_UUID).disableNorms().build(); mapping.keywordFieldBuilder(FIELD_KEY).addSubFields(SORTABLE_ANALYZER).build(); mapping.textFieldBuilder(FIELD_NAME) .withFieldData() .termVectorWithPositionOffsets() .addSubFields(NAME_ANALYZERS) .build(); mapping.keywordFieldBuilder(FIELD_QUALIFIER).build(); mapping.keywordFieldBuilder(FIELD_LANGUAGE).disableNorms().build(); mapping.keywordFieldBuilder(FIELD_ORGANIZATION_UUID).disableNorms().build(); } }
@Override public void define(IndexDefinitionContext context) { NewIndex index = context.create( INDEX_TYPE_TEST.getIndex(), newBuilder(config) .setRefreshInterval(MANUAL_REFRESH_INTERVAL) .setDefaultNbOfShards(5) .build()); NewIndex.NewIndexType mapping = index.createType(INDEX_TYPE_TEST.getType()); mapping.setAttribute("_routing", ImmutableMap.of("required", true)); mapping.keywordFieldBuilder(FIELD_PROJECT_UUID).disableNorms().build(); mapping.keywordFieldBuilder(FIELD_FILE_UUID).disableNorms().build(); mapping.keywordFieldBuilder(FIELD_TEST_UUID).disableNorms().build(); mapping.keywordFieldBuilder(FIELD_NAME).disableNorms().disableSearch().disableSortingAndAggregating().build(); mapping.keywordFieldBuilder(FIELD_STATUS).disableNorms().disableSearch().build(); mapping.createLongField(FIELD_DURATION_IN_MS); mapping.keywordFieldBuilder(FIELD_MESSAGE).disableNorms().disableSearch().disableSortingAndAggregating().build(); mapping.keywordFieldBuilder(FIELD_STACKTRACE).disableNorms().disableSearch().disableSortingAndAggregating().build(); mapping.setProperty(FIELD_COVERED_FILES, ImmutableMap.of("type", "nested", "properties", ImmutableMap.of( FIELD_COVERED_FILE_UUID, ImmutableMap.of("type", FIELD_TYPE_KEYWORD, "index", INDEX_SEARCHABLE), FIELD_COVERED_FILE_LINES, ImmutableMap.of("type", "integer")))); mapping.createDateTimeField(FIELD_UPDATED_AT); } }
/** * Creates a type that requires to verify that user has the read permission * when searching for documents. * * Both types {@code typeName} and "authorization" are created. Documents * must be created with _parent and _routing having the parent uuid as values. * * @see NewIndex.NewIndexType#requireProjectAuthorization() */ private static NewIndex.NewIndexType enableProjectAuthorization(NewIndex.NewIndexType type) { type.setAttribute("_parent", ImmutableMap.of("type", TYPE_AUTHORIZATION)); type.setAttribute("_routing", ImmutableMap.of("required", true)); NewIndex.NewIndexType authType = type.getIndex().createType(TYPE_AUTHORIZATION); authType.setAttribute("_routing", ImmutableMap.of("required", true)); authType.createLongField(FIELD_GROUP_IDS); authType.createLongField(FIELD_USER_IDS); authType.createBooleanField(FIELD_ALLOW_ANYONE); authType.setEnableSource(false); return type; }
@Override public void define(IndexDefinitionContext context) { NewIndex index = context.create(INDEX_TYPE_USER.getIndex(), newBuilder(config) .setDefaultNbOfShards(1) .build()); // type "user" NewIndex.NewIndexType mapping = index.createType(INDEX_TYPE_USER.getType()); mapping.keywordFieldBuilder(FIELD_UUID).disableNorms().build(); mapping.keywordFieldBuilder(FIELD_LOGIN).addSubFields(USER_SEARCH_GRAMS_ANALYZER).build(); mapping.keywordFieldBuilder(FIELD_NAME).addSubFields(USER_SEARCH_GRAMS_ANALYZER).build(); mapping.keywordFieldBuilder(FIELD_EMAIL).addSubFields(USER_SEARCH_GRAMS_ANALYZER, SORTABLE_ANALYZER).build(); mapping.createBooleanField(FIELD_ACTIVE); mapping.keywordFieldBuilder(FIELD_SCM_ACCOUNTS).disableNorms().addSubFields(SORTABLE_ANALYZER).build(); mapping.keywordFieldBuilder(FIELD_ORGANIZATION_UUIDS).disableNorms().build(); } }