[ 
https://issues.apache.org/jira/browse/CAMEL-26234?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Andrea Cosentino reassigned CAMEL-26234:
----------------------------------------

    Assignee: Andrea Cosentino

> camel-elasticsearch-rest-client - SEARCH ignores a JSON query in the body and 
> matches every document, and a leftover body wins over CamelElasticsearchId
> --------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-26234
>                 URL: https://issues.apache.org/jira/browse/CAMEL-26234
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-elasticsearch
>            Reporter: Claus Ibsen
>            Assignee: Andrea Cosentino
>            Priority: Minor
>             Fix For: 4.24.0
>
>
> Found while adding the catalog body types of elasticsearch-rest-client 
> (CAMEL-24961, PR #28398). There is no JIRA component for 
> camel-elasticsearch-rest-client, so this uses camel-elasticsearch.
> h4. 1. SEARCH ignores a JSON query in the body
> {{ElasticsearchRestClientProducer.search}} (main 2a465aa4814c, lines 287-296) 
> uses the {{CamelElasticsearchSearchQuery}} header, else a Map body; a JSON 
> text body is converted to a Map, fails, and the request goes out with no 
> query, so every document matches. The PR documents this, but a JSON body is 
> the natural input. Checked on 4.24.0-SNAPSHOT with Elasticsearch 9.1.0 and 
> OpenSearch 3.9.0 from test-infra (docker).
> Proposed: send a JSON text body as the query when the header is not set.
> h4. 2. GET_BY_ID and DELETE: a leftover body wins over CamelElasticsearchId
> {{getById}} (line 250) and {{delete}} (line 266) read the id from the body 
> first and use the {{CamelElasticsearchId}} header only when the body is 
> empty, so after a previous step left a body (for example the JSON of an 
> INDEX_OR_UPDATE) the call uses that text as the id. Checked on 
> 4.24.0-SNAPSHOT with Elasticsearch 9.1.0 and OpenSearch 3.9.0 from test-infra 
> (docker).
> Proposed: prefer the header, then the body (as the other operations do).
> h4. 3. {{extractDocument}} found=false branch is unreachable
> {{extractDocument}} (lines 351-353) returns null when {{found}} is false, but 
> the low-level client throws a {{ResponseException}} for the 404 first, so 
> GET_BY_ID of a missing id fails instead of returning null. Checked on 
> 4.24.0-SNAPSHOT with Elasticsearch 9.1.0 and OpenSearch 3.9.0 from test-infra 
> (docker).
> Proposed: catch the 404 and return null (as the found=false branch means to), 
> or remove the branch.
> h4. 4. The doc names the headers INDEX_NAME and ID
> {{elasticsearch-rest-client-component.adoc}} says to set the headers 
> {{INDEX_NAME}} and {{ID}}; the constants are {{CamelElasticsearchIndexName}} 
> and {{CamelElasticsearchId}} ({{ElasticSearchRestClientConstant}} lines 24 
> and 34). Not fixed in the PR.
> Proposed: use the real header names in the operations table.
> _Claude Code on behalf of davsclaus_



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

Reply via email to