Skip to content

Commit

Permalink
fix constant_keyword field type
Browse files Browse the repository at this point in the history
Signed-off-by: kkewwei <kkewwei@163.com>
  • Loading branch information
kkewwei committed Jul 18, 2024
1 parent b3b743d commit b1d4421
Show file tree
Hide file tree
Showing 4 changed files with 81 additions and 2 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
- Refactoring Grok.validatePatternBank by using an iterative approach ([#14206](https://github.com/opensearch-project/OpenSearch/pull/14206))
- Update help output for _cat ([#14722](https://github.com/opensearch-project/OpenSearch/pull/14722))
- Fix bulk upsert ignores the default_pipeline and final_pipeline when auto-created index matches the index template ([#12891](https://github.com/opensearch-project/OpenSearch/pull/12891))
- Fix constant_keyword field type not working when creating index ([#14807](https://github.com/opensearch-project/OpenSearch/pull/14807))

### Security

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
---
# The test setup includes:
# - Create index with constant_keyword field type
# - Check mapping
# - Index two example documents
# - Search
# - Delete Index when connection is teardown

"Mappings and Supported queries":
- skip:
version: " - 2.99.99"
reason: "fixed in 3.0.0"

# Create index with constant_keyword field type
- do:
indices.create:
index: test
body:
mappings:
properties:
genre:
type: "constant_keyword"
"value": "1"

# Index document
- do:
index:
index: test
id: 1
body: {
"genre": "1"
}

- do:
index:
index: test
id: 2
body: {
"genre": 1
}

- do:
indices.refresh:
index: test

# Check mapping
- do:
indices.get_mapping:
index: test
- is_true: test.mappings
- match: { test.mappings.properties.genre.type: constant_keyword }
- length: { test.mappings.properties.genre: 2 }

# Verify Document Count
- do:
search:
body: {
query: {
match_all: {}
}
}

- length: { hits.hits: 2 }
- match: { hits.hits.0._source.genre: "1" }
- match: { hits.hits.1._source.genre: 1 }

# Delete Index when connection is teardown
- do:
indices.delete:
index: test
Original file line number Diff line number Diff line change
Expand Up @@ -68,11 +68,11 @@ private static ConstantKeywordFieldMapper toType(FieldMapper in) {
*/
public static class Builder extends ParametrizedFieldMapper.Builder {

private final Parameter<String> value;
private final Parameter<String> value = Parameter.stringParam(valuePropertyName, false, m -> toType(m).value, null);

public Builder(String name, String value) {
super(name);
this.value = Parameter.stringParam(valuePropertyName, false, m -> toType(m).value, value);
this.value.setValue(value);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,14 @@ public void testMissingDefaultIndexMapper() throws Exception {
assertThat(e.getMessage(), containsString("Field [field] is missing required parameter [value]"));
}

public void testBuilderToXContent() throws IOException {
ConstantKeywordFieldMapper.Builder builder = new ConstantKeywordFieldMapper.Builder("name", "value1");
XContentBuilder xContentBuilder = JsonXContent.contentBuilder().startObject();
builder.toXContent(xContentBuilder, false);
xContentBuilder.endObject();
assertEquals("{\"value\":\"value1\"}", xContentBuilder.toString());
}

private final SourceToParse source(CheckedConsumer<XContentBuilder, IOException> build) throws IOException {
XContentBuilder builder = JsonXContent.contentBuilder().startObject();
build.accept(builder);
Expand Down

0 comments on commit b1d4421

Please sign in to comment.