opensearch-project / opensearch-rs

OpenSearch Rust Client
Apache License 2.0
59 stars 34 forks source link

[BUG] BulkCreate operation should support optional _id #241

Open sharp-pixel opened 7 months ago

sharp-pixel commented 7 months ago

What is the bug?

BulkCreate operation requires an id to be specified, when it is optional in the original documentation: https://www.elastic.co/guide/en/elasticsearch/reference/7.10/docs-bulk.html#bulk-api-request-body. Note that Data Streams require the use of a create operation and the _id should be auto-generated by OpenSearch as a best practice for log analytics.

How can one reproduce the bug?

Look at https://github.com/opensearch-project/opensearch-rs/blob/main/opensearch/src/root/bulk.rs#L228 where the new method requires the id.

What is the expected behavior?

new should have a variant pub fn new<S>(source: B) -> Self (or some other name as we cannot overload in Rust)

What is your host/environment?

any

Do you have any screenshots?

N/A

Do you have any additional context?

no

Xtansia commented 7 months ago

Thanks for the report @sharp-pixel, would you be interested in making a PR to add this optional constructor?

camerondurham commented 6 months ago

What are your thoughts on adjusting the existing API for consistency with how "optional" _id fields are handled?

This would be a breaking change, but could potentially make the API more intuitive/consistent if id was handled consistently per the API.

Instead of making a new constructor, what do you think about having a consistent handling of optional API fields?

  1. new(source: B) + id(id: S)
  2. new(id: Option<S>, source: B)

Different Handling of Optional _id Field