Skip to content

Commit

Permalink
fix constant_keyword field type (opensearch-project#14807)
Browse files Browse the repository at this point in the history
Signed-off-by: kkewwei <kkewwei@163.com>

Signed-off-by: kkewwei <kewei.11@bytedance.com>

test

Signed-off-by: Daniel (dB.) Doubrovkine <dblock@amazon.com>
Co-authored-by: Daniel (dB.) Doubrovkine <dblock@amazon.com>
(cherry picked from commit cb74371)
  • Loading branch information
kkewwei authored and gaobinlong committed Jul 25, 2024
1 parent d09642c commit 36c2086
Show file tree
Hide file tree
Showing 4 changed files with 81 additions and 2 deletions.
1 change: 1 addition & 0 deletions release-notes/opensearch.release-notes-2.16.0.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,3 +90,4 @@
- Use circuit breaker in InternalHistogram when adding empty buckets ([#14754](https://github.com/opensearch-project/OpenSearch/pull/14754))
- Create new IndexInput for multi part upload ([#14888](https://github.com/opensearch-project/OpenSearch/pull/14888))
- Fix searchable snapshot failure with scripted fields ([#14411](https://github.com/opensearch-project/OpenSearch/pull/14411))
- Fix constant_keyword field type used when creating index ([#14807](https://github.com/opensearch-project/OpenSearch/pull/14807))
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 36c2086

Please sign in to comment.