Terms aggregation on raw field is returning Exception in thread "main" jakarta.json.stream.JsonParsingException: Property name 'doc_count_error_upper_bound' is not in the 'type#name' format. Make sure the request has 'typed_keys' set

Hi

I have a simple index, index1 as below with mappings

{
    "index1": {
        "mappings": {
            "properties": {
                "_all": {
                    "type": "text",
                    "fields": {
                        "keyword": {
                            "type": "keyword",
                            "ignore_above": 256
                        }
                    }
                },
                "name": {
                    "type": "text",
                    "fields": {
                        "lower": {
                            "type": "keyword",
                            "normalizer": "lowercase_normalizer"
                        },
                        "raw": {
                            "type": "keyword",
                            "eager_global_ordinals": true,
                            "ignore_above": 10922
                        }
                    },
                    "copy_to": [
                        "_all"
                    ]
                }
            }
        }
    }
}

and with data

{
    "took": 69,
    "timed_out": false,
    "_shards": {
        "total": 10,
        "successful": 10,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 10,
            "relation": "eq"
        },
        "max_score": 1.0,
        "hits": [
            {
                "_index": "index1",
                "_id": "5",
                "_score": 1.0,
                "_source": {
                    "name": "name5"
                }
            },
            {
                "_index": "index1",
                "_id": "3",
                "_score": 1.0,
                "_source": {
                    "name": "name3"
                }
            },
            {
                "_index": "index1",
                "_id": "9",
                "_score": 1.0,
                "_source": {
                    "name": "MAme9"
                }
            },
            {
                "_index": "index1",
                "_id": "4",
                "_score": 1.0,
                "_source": {
                    "name": "name4"
                }
            },
            {
                "_index": "index1",
                "_id": "8",
                "_score": 1.0,
                "_source": {
                    "name": "Name8"
                }
            },
            {
                "_index": "index1",
                "_id": "7",
                "_score": 1.0,
                "_source": {
                    "name": "NAME7"
                }
            },
            {
                "_index": "index1",
                "_id": "10",
                "_score": 1.0,
                "_source": {
                    "name": "nAME10"
                }
            },
            {
                "_index": "index1",
                "_id": "2",
                "_score": 1.0,
                "_source": {
                    "name": "name2"
                }
            },
            {
                "_index": "index1",
                "_id": "6",
                "_score": 1.0,
                "_source": {
                    "name": "name6"
                }
            },
            {
                "_index": "index1",
                "_id": "1",
                "_score": 1.0,
                "_source": {
                    "name": "name1"
                }
            }
        ]
    }
}

Now I also have a simple terms aggregation, as below. I am using the latest Elasticsearch java client

public class EsAggregation {

    public static void main(String[] args) throws Exception {
        final ElasticSearchClient client = getClient();
        final HttpHost host = new HttpHost("localhost", 9200, "http");

      
        String agg = "terms.keyword";
        SearchRequest searchRequest = getSearchRequest(agg, client, "index1", rand.nextInt(10000) + "");
        SearchResponse<Object> resp2 = client.search(searchRequest, Object.class);
        System.out.println(resp2.aggregations());
        System.out.println("completed");
    }

    public static SearchRequest getSearchRequest(String agg, ElasticSearchClient client, String index, String randomValue) {
        SearchRequest.Builder searchRequestBuilder = new SearchRequest.Builder().index(index);
        Aggregation aggregation;
         if (agg.equals("terms.keyword")) {
            TermsAggregation termsAggregation = new TermsAggregation.Builder().field("name.raw").showTermDocCountError(true).build();
            aggregation = new Aggregation.Builder().terms(termsAggregation).build();
        } 
            
        } else {
            throw new RuntimeException("Unknown agg: " + agg);
        }

        Map<String, Aggregation> map = new HashMap<String, Aggregation>();
        map.put("somename", aggregation);

        return searchRequestBuilder.aggregations(map).build();
    }

I get the following error, can anyone help

Exception in thread "main" jakarta.json.stream.JsonParsingException: Property name 'doc_count_error_upper_bound' is not in the 'type#name' format. Make sure the request has 'typed_keys' set.
	at org.elasticsearch.client.json.ExternallyTaggedUnion$TypedKeysDeserializer.deserializeEntry(ExternallyTaggedUnion.java:132)
	at org.elasticsearch.client.elasticsearch._types.aggregations.MultiBucketBase.lambda$setupMultiBucketBaseDeserializer$0(MultiBucketBase.java:166)
	at org.elasticsearch.client.json.ObjectDeserializer.parseUnknownField(ObjectDeserializer.java:218)
	at org.elasticsearch.client.json.ObjectDeserializer.deserialize(ObjectDeserializer.java:187)
	at org.elasticsearch.client.json.ObjectDeserializer.deserialize(ObjectDeserializer.java:150)
	at org.elasticsearch.client.json.ObjectBuilderDeserializer.deserialize(ObjectBuilderDeserializer.java:98)
	at org.elasticsearch.client.json.DelegatingDeserializer$SameType.deserialize(DelegatingDeserializer.java:61)
	at org.elasticsearch.client.json.JsonpDeserializerBase$ArrayDeserializer.deserialize(JsonpDeserializerBase.java:353)
	at org.elasticsearch.client.json.JsonpDeserializerBase$ArrayDeserializer.deserialize(JsonpDeserializerBase.java:322)
	at org.elasticsearch.client.json.UnionDeserializer$SingleMemberHandler.deserialize(UnionDeserializer.java:91)
	at org.elasticsearch.client.json.UnionDeserializer.deserialize(UnionDeserializer.java:324)
	at org.elasticsearch.client.json.UnionDeserializer.deserialize(UnionDeserializer.java:279)
	at org.elasticsearch.client.json.ObjectDeserializer$FieldObjectDeserializer.deserialize(ObjectDeserializer.java:85)
	at org.elasticsearch.client.json.ObjectDeserializer.deserialize(ObjectDeserializer.java:189)
	at org.elasticsearch.client.json.ObjectDeserializer.deserialize(ObjectDeserializer.java:150)
	at org.elasticsearch.client.json.ObjectBuilderDeserializer.deserialize(ObjectBuilderDeserializer.java:98)
	at org.elasticsearch.client.json.DelegatingDeserializer$SameType.deserialize(DelegatingDeserializer.java:61)
	at org.elasticsearch.client.json.ExternallyTaggedUnion$Deserializer.deserialize(ExternallyTaggedUnion.java:96)
	at org.elasticsearch.client.json.ExternallyTaggedUnion$TypedKeysDeserializer.deserializeEntry(ExternallyTaggedUnion.java:138)
	at org.elasticsearch.client.json.ExternallyTaggedUnion$TypedKeysDeserializer.deserialize(ExternallyTaggedUnion.java:121)
	at org.elasticsearch.client.json.ExternallyTaggedUnion$TypedKeysDeserializer.deserialize(ExternallyTaggedUnion.java:108)
	at org.elasticsearch.client.json.JsonpDeserializer.deserialize(JsonpDeserializer.java:88)
	at org.elasticsearch.client.json.ObjectDeserializer$FieldObjectDeserializer.deserialize(ObjectDeserializer.java:85)
	at org.elasticsearch.client.json.ObjectDeserializer.deserialize(ObjectDeserializer.java:189)
	at org.elasticsearch.client.json.ObjectDeserializer.deserialize(ObjectDeserializer.java:150)
	at org.elasticsearch.client.json.JsonpDeserializer.deserialize(JsonpDeserializer.java:88)
	at org.elasticsearch.client.json.ObjectBuilderDeserializer.deserialize(ObjectBuilderDeserializer.java:92)
	at org.elasticsearch.client.json.DelegatingDeserializer$SameType.deserialize(DelegatingDeserializer.java:56)
	at org.elasticsearch.client.transport.endpoints.EndpointWithResponseMapperAttr$1.deserialize(EndpointWithResponseMapperAttr.java:69)
	at org.elasticsearch.client.transport.rest_client.RestClientTransport.decodeResponse(RestClientTransport.java:325)
	at org.elasticsearch.client.transport.rest_client.RestClientTransport.getHighLevelResponse(RestClientTransport.java:291)
	at org.elasticsearch.client.transport.rest_client.RestClientTransport.performRequest(RestClientTransport.java:144)
	at org.elasticsearch.client.elasticsearch.elasticsearchClient.search(elasticsearchClient.java:1302)

@dadoonet Can you please help here or point me to some experts?
Thanks much!

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.