-
Notifications
You must be signed in to change notification settings - Fork 275
Closed
Labels
Area: SpecificationRelated to the API spec used to generate client codeRelated to the API spec used to generate client code
Description
Java API client version
8.2.2
Java version
17.0.3
Elasticsearch Version
8.2.2
Problem description
The following code stores a document and then should do a search with a runtime_mappings
field:
ElasticsearchClient client = createTheClient();
String index = "testindex";
var p = new Product("p1", 42.0);
client.index(ir -> ir
.index(index)
.document(p));
client.indices().flush(f -> f.index(index));
RuntimeField runtimeField = RuntimeField.of(rf -> rf
.type(RuntimeFieldType.Double)
.script(Script.of(s -> s
.inline(i -> i.
source("emit(doc['price'].value * 1.19)")
)
))
);
client.search(sr -> sr
.index(index)
.runtimeMappings("priceWithTax", Collections.singletonList(runtimeField)), // NOTE: the builder accepts only lists here
Person.class);
The request that is sent to Elasticsearch has the following body:
{
"runtime_mappings": {
"priceWithTax": [
{
"script": {
"source": "emit(doc['price'].value * 1.19)"
},
"type": "double"
}
]
}
}
Note that the priceWithTax
property is an array, the client builder requires a list here.
This request leads to an error response from the server:
{
"error" : {
"root_cause" : [
{
"type" : "mapper_parsing_exception",
"reason" : "Expected map for runtime field [priceWithTax] definition but got a java.util.ArrayList"
}
],
"type" : "search_phase_execution_exception",
"reason" : "all shards failed",
"phase" : "query",
"grouped" : true,
"failed_shards" : [
{
"shard" : 0,
"index" : "testindex",
"node" : "ef-uEMwKS1mbgKHO-Gz3mg",
"reason" : {
"type" : "mapper_parsing_exception",
"reason" : "Expected map for runtime field [priceWithTax] definition but got a java.util.ArrayList"
}
}
]
},
"status" : 400
}
Neither the documentation for runtime_fields in a search request nor for runtime_fields in a mapping specify this as an array.
MatthewSwarbrick
Metadata
Metadata
Assignees
Labels
Area: SpecificationRelated to the API spec used to generate client codeRelated to the API spec used to generate client code