diff --git a/docs-website/reference/integrations-api/opensearch.md b/docs-website/reference/integrations-api/opensearch.md
index ea06e5bf63..a0e5fc9b4b 100644
--- a/docs-website/reference/integrations-api/opensearch.md
+++ b/docs-website/reference/integrations-api/opensearch.md
@@ -1220,6 +1220,7 @@ __init__(
use_ssl: bool | None = None,
verify_certs: bool | None = None,
timeout: int | None = None,
+ nested_fields: list[str] | Literal["*"] | None = None,
**kwargs: Any
) -> None
```
@@ -1259,6 +1260,12 @@ For more information on connection parameters, see the [official OpenSearch docu
- **use_ssl** (bool | None) – Whether to use SSL. Defaults to None
- **verify_certs** (bool | None) – Whether to verify certificates. Defaults to None
- **timeout** (int | None) – Timeout in seconds. Defaults to None
+- **nested_fields** (list\[str\] | Literal['\*'] | None) – List of metadata field paths (without the `meta.` prefix) that should be mapped
+ as OpenSearch `nested` type, enabling multi-condition filtering on array-of-objects fields.
+ Pass `"*"` to auto-detect `list[dict]` fields and map them as nested from
+ the first `write_documents` batch.
+ When the index already exists, nested fields are discovered from the live mapping.
+ Defaults to None (no nested support).
- \*\***kwargs** (Any) – Optional arguments that `OpenSearch` takes. For the full list of supported kwargs,
see the [official OpenSearch reference](https://opensearch-project.github.io/opensearch-py/api-ref/clients/opensearch_client.html)
@@ -1837,7 +1844,15 @@ Uses composite aggregations for proper pagination beyond 10k results.
### normalize_filters
```python
-normalize_filters(filters: dict[str, Any]) -> dict[str, Any]
+normalize_filters(
+ filters: dict[str, Any], nested_fields: set[str] | None = None
+) -> dict[str, Any]
```
Converts Haystack filters in OpenSearch compatible filters.
+
+**Parameters:**
+
+- **filters** (dict\[str, Any\]) – Haystack filter dictionary.
+- **nested_fields** (set\[str\] | None) – Set of metadata field paths that are mapped as `nested` type in OpenSearch.
+ When provided, conditions targeting sub-fields of these paths are wrapped in `nested` queries.
diff --git a/docs-website/reference_versioned_docs/version-2.18/integrations-api/opensearch.md b/docs-website/reference_versioned_docs/version-2.18/integrations-api/opensearch.md
index ea06e5bf63..a0e5fc9b4b 100644
--- a/docs-website/reference_versioned_docs/version-2.18/integrations-api/opensearch.md
+++ b/docs-website/reference_versioned_docs/version-2.18/integrations-api/opensearch.md
@@ -1220,6 +1220,7 @@ __init__(
use_ssl: bool | None = None,
verify_certs: bool | None = None,
timeout: int | None = None,
+ nested_fields: list[str] | Literal["*"] | None = None,
**kwargs: Any
) -> None
```
@@ -1259,6 +1260,12 @@ For more information on connection parameters, see the [official OpenSearch docu
- **use_ssl** (bool | None) – Whether to use SSL. Defaults to None
- **verify_certs** (bool | None) – Whether to verify certificates. Defaults to None
- **timeout** (int | None) – Timeout in seconds. Defaults to None
+- **nested_fields** (list\[str\] | Literal['\*'] | None) – List of metadata field paths (without the `meta.` prefix) that should be mapped
+ as OpenSearch `nested` type, enabling multi-condition filtering on array-of-objects fields.
+ Pass `"*"` to auto-detect `list[dict]` fields and map them as nested from
+ the first `write_documents` batch.
+ When the index already exists, nested fields are discovered from the live mapping.
+ Defaults to None (no nested support).
- \*\***kwargs** (Any) – Optional arguments that `OpenSearch` takes. For the full list of supported kwargs,
see the [official OpenSearch reference](https://opensearch-project.github.io/opensearch-py/api-ref/clients/opensearch_client.html)
@@ -1837,7 +1844,15 @@ Uses composite aggregations for proper pagination beyond 10k results.
### normalize_filters
```python
-normalize_filters(filters: dict[str, Any]) -> dict[str, Any]
+normalize_filters(
+ filters: dict[str, Any], nested_fields: set[str] | None = None
+) -> dict[str, Any]
```
Converts Haystack filters in OpenSearch compatible filters.
+
+**Parameters:**
+
+- **filters** (dict\[str, Any\]) – Haystack filter dictionary.
+- **nested_fields** (set\[str\] | None) – Set of metadata field paths that are mapped as `nested` type in OpenSearch.
+ When provided, conditions targeting sub-fields of these paths are wrapped in `nested` queries.
diff --git a/docs-website/reference_versioned_docs/version-2.19/integrations-api/opensearch.md b/docs-website/reference_versioned_docs/version-2.19/integrations-api/opensearch.md
index ea06e5bf63..a0e5fc9b4b 100644
--- a/docs-website/reference_versioned_docs/version-2.19/integrations-api/opensearch.md
+++ b/docs-website/reference_versioned_docs/version-2.19/integrations-api/opensearch.md
@@ -1220,6 +1220,7 @@ __init__(
use_ssl: bool | None = None,
verify_certs: bool | None = None,
timeout: int | None = None,
+ nested_fields: list[str] | Literal["*"] | None = None,
**kwargs: Any
) -> None
```
@@ -1259,6 +1260,12 @@ For more information on connection parameters, see the [official OpenSearch docu
- **use_ssl** (bool | None) – Whether to use SSL. Defaults to None
- **verify_certs** (bool | None) – Whether to verify certificates. Defaults to None
- **timeout** (int | None) – Timeout in seconds. Defaults to None
+- **nested_fields** (list\[str\] | Literal['\*'] | None) – List of metadata field paths (without the `meta.` prefix) that should be mapped
+ as OpenSearch `nested` type, enabling multi-condition filtering on array-of-objects fields.
+ Pass `"*"` to auto-detect `list[dict]` fields and map them as nested from
+ the first `write_documents` batch.
+ When the index already exists, nested fields are discovered from the live mapping.
+ Defaults to None (no nested support).
- \*\***kwargs** (Any) – Optional arguments that `OpenSearch` takes. For the full list of supported kwargs,
see the [official OpenSearch reference](https://opensearch-project.github.io/opensearch-py/api-ref/clients/opensearch_client.html)
@@ -1837,7 +1844,15 @@ Uses composite aggregations for proper pagination beyond 10k results.
### normalize_filters
```python
-normalize_filters(filters: dict[str, Any]) -> dict[str, Any]
+normalize_filters(
+ filters: dict[str, Any], nested_fields: set[str] | None = None
+) -> dict[str, Any]
```
Converts Haystack filters in OpenSearch compatible filters.
+
+**Parameters:**
+
+- **filters** (dict\[str, Any\]) – Haystack filter dictionary.
+- **nested_fields** (set\[str\] | None) – Set of metadata field paths that are mapped as `nested` type in OpenSearch.
+ When provided, conditions targeting sub-fields of these paths are wrapped in `nested` queries.
diff --git a/docs-website/reference_versioned_docs/version-2.20/integrations-api/opensearch.md b/docs-website/reference_versioned_docs/version-2.20/integrations-api/opensearch.md
index ea06e5bf63..a0e5fc9b4b 100644
--- a/docs-website/reference_versioned_docs/version-2.20/integrations-api/opensearch.md
+++ b/docs-website/reference_versioned_docs/version-2.20/integrations-api/opensearch.md
@@ -1220,6 +1220,7 @@ __init__(
use_ssl: bool | None = None,
verify_certs: bool | None = None,
timeout: int | None = None,
+ nested_fields: list[str] | Literal["*"] | None = None,
**kwargs: Any
) -> None
```
@@ -1259,6 +1260,12 @@ For more information on connection parameters, see the [official OpenSearch docu
- **use_ssl** (bool | None) – Whether to use SSL. Defaults to None
- **verify_certs** (bool | None) – Whether to verify certificates. Defaults to None
- **timeout** (int | None) – Timeout in seconds. Defaults to None
+- **nested_fields** (list\[str\] | Literal['\*'] | None) – List of metadata field paths (without the `meta.` prefix) that should be mapped
+ as OpenSearch `nested` type, enabling multi-condition filtering on array-of-objects fields.
+ Pass `"*"` to auto-detect `list[dict]` fields and map them as nested from
+ the first `write_documents` batch.
+ When the index already exists, nested fields are discovered from the live mapping.
+ Defaults to None (no nested support).
- \*\***kwargs** (Any) – Optional arguments that `OpenSearch` takes. For the full list of supported kwargs,
see the [official OpenSearch reference](https://opensearch-project.github.io/opensearch-py/api-ref/clients/opensearch_client.html)
@@ -1837,7 +1844,15 @@ Uses composite aggregations for proper pagination beyond 10k results.
### normalize_filters
```python
-normalize_filters(filters: dict[str, Any]) -> dict[str, Any]
+normalize_filters(
+ filters: dict[str, Any], nested_fields: set[str] | None = None
+) -> dict[str, Any]
```
Converts Haystack filters in OpenSearch compatible filters.
+
+**Parameters:**
+
+- **filters** (dict\[str, Any\]) – Haystack filter dictionary.
+- **nested_fields** (set\[str\] | None) – Set of metadata field paths that are mapped as `nested` type in OpenSearch.
+ When provided, conditions targeting sub-fields of these paths are wrapped in `nested` queries.
diff --git a/docs-website/reference_versioned_docs/version-2.21/integrations-api/opensearch.md b/docs-website/reference_versioned_docs/version-2.21/integrations-api/opensearch.md
index ea06e5bf63..a0e5fc9b4b 100644
--- a/docs-website/reference_versioned_docs/version-2.21/integrations-api/opensearch.md
+++ b/docs-website/reference_versioned_docs/version-2.21/integrations-api/opensearch.md
@@ -1220,6 +1220,7 @@ __init__(
use_ssl: bool | None = None,
verify_certs: bool | None = None,
timeout: int | None = None,
+ nested_fields: list[str] | Literal["*"] | None = None,
**kwargs: Any
) -> None
```
@@ -1259,6 +1260,12 @@ For more information on connection parameters, see the [official OpenSearch docu
- **use_ssl** (bool | None) – Whether to use SSL. Defaults to None
- **verify_certs** (bool | None) – Whether to verify certificates. Defaults to None
- **timeout** (int | None) – Timeout in seconds. Defaults to None
+- **nested_fields** (list\[str\] | Literal['\*'] | None) – List of metadata field paths (without the `meta.` prefix) that should be mapped
+ as OpenSearch `nested` type, enabling multi-condition filtering on array-of-objects fields.
+ Pass `"*"` to auto-detect `list[dict]` fields and map them as nested from
+ the first `write_documents` batch.
+ When the index already exists, nested fields are discovered from the live mapping.
+ Defaults to None (no nested support).
- \*\***kwargs** (Any) – Optional arguments that `OpenSearch` takes. For the full list of supported kwargs,
see the [official OpenSearch reference](https://opensearch-project.github.io/opensearch-py/api-ref/clients/opensearch_client.html)
@@ -1837,7 +1844,15 @@ Uses composite aggregations for proper pagination beyond 10k results.
### normalize_filters
```python
-normalize_filters(filters: dict[str, Any]) -> dict[str, Any]
+normalize_filters(
+ filters: dict[str, Any], nested_fields: set[str] | None = None
+) -> dict[str, Any]
```
Converts Haystack filters in OpenSearch compatible filters.
+
+**Parameters:**
+
+- **filters** (dict\[str, Any\]) – Haystack filter dictionary.
+- **nested_fields** (set\[str\] | None) – Set of metadata field paths that are mapped as `nested` type in OpenSearch.
+ When provided, conditions targeting sub-fields of these paths are wrapped in `nested` queries.
diff --git a/docs-website/reference_versioned_docs/version-2.22/integrations-api/opensearch.md b/docs-website/reference_versioned_docs/version-2.22/integrations-api/opensearch.md
index ea06e5bf63..a0e5fc9b4b 100644
--- a/docs-website/reference_versioned_docs/version-2.22/integrations-api/opensearch.md
+++ b/docs-website/reference_versioned_docs/version-2.22/integrations-api/opensearch.md
@@ -1220,6 +1220,7 @@ __init__(
use_ssl: bool | None = None,
verify_certs: bool | None = None,
timeout: int | None = None,
+ nested_fields: list[str] | Literal["*"] | None = None,
**kwargs: Any
) -> None
```
@@ -1259,6 +1260,12 @@ For more information on connection parameters, see the [official OpenSearch docu
- **use_ssl** (bool | None) – Whether to use SSL. Defaults to None
- **verify_certs** (bool | None) – Whether to verify certificates. Defaults to None
- **timeout** (int | None) – Timeout in seconds. Defaults to None
+- **nested_fields** (list\[str\] | Literal['\*'] | None) – List of metadata field paths (without the `meta.` prefix) that should be mapped
+ as OpenSearch `nested` type, enabling multi-condition filtering on array-of-objects fields.
+ Pass `"*"` to auto-detect `list[dict]` fields and map them as nested from
+ the first `write_documents` batch.
+ When the index already exists, nested fields are discovered from the live mapping.
+ Defaults to None (no nested support).
- \*\***kwargs** (Any) – Optional arguments that `OpenSearch` takes. For the full list of supported kwargs,
see the [official OpenSearch reference](https://opensearch-project.github.io/opensearch-py/api-ref/clients/opensearch_client.html)
@@ -1837,7 +1844,15 @@ Uses composite aggregations for proper pagination beyond 10k results.
### normalize_filters
```python
-normalize_filters(filters: dict[str, Any]) -> dict[str, Any]
+normalize_filters(
+ filters: dict[str, Any], nested_fields: set[str] | None = None
+) -> dict[str, Any]
```
Converts Haystack filters in OpenSearch compatible filters.
+
+**Parameters:**
+
+- **filters** (dict\[str, Any\]) – Haystack filter dictionary.
+- **nested_fields** (set\[str\] | None) – Set of metadata field paths that are mapped as `nested` type in OpenSearch.
+ When provided, conditions targeting sub-fields of these paths are wrapped in `nested` queries.
diff --git a/docs-website/reference_versioned_docs/version-2.23/integrations-api/opensearch.md b/docs-website/reference_versioned_docs/version-2.23/integrations-api/opensearch.md
index ea06e5bf63..a0e5fc9b4b 100644
--- a/docs-website/reference_versioned_docs/version-2.23/integrations-api/opensearch.md
+++ b/docs-website/reference_versioned_docs/version-2.23/integrations-api/opensearch.md
@@ -1220,6 +1220,7 @@ __init__(
use_ssl: bool | None = None,
verify_certs: bool | None = None,
timeout: int | None = None,
+ nested_fields: list[str] | Literal["*"] | None = None,
**kwargs: Any
) -> None
```
@@ -1259,6 +1260,12 @@ For more information on connection parameters, see the [official OpenSearch docu
- **use_ssl** (bool | None) – Whether to use SSL. Defaults to None
- **verify_certs** (bool | None) – Whether to verify certificates. Defaults to None
- **timeout** (int | None) – Timeout in seconds. Defaults to None
+- **nested_fields** (list\[str\] | Literal['\*'] | None) – List of metadata field paths (without the `meta.` prefix) that should be mapped
+ as OpenSearch `nested` type, enabling multi-condition filtering on array-of-objects fields.
+ Pass `"*"` to auto-detect `list[dict]` fields and map them as nested from
+ the first `write_documents` batch.
+ When the index already exists, nested fields are discovered from the live mapping.
+ Defaults to None (no nested support).
- \*\***kwargs** (Any) – Optional arguments that `OpenSearch` takes. For the full list of supported kwargs,
see the [official OpenSearch reference](https://opensearch-project.github.io/opensearch-py/api-ref/clients/opensearch_client.html)
@@ -1837,7 +1844,15 @@ Uses composite aggregations for proper pagination beyond 10k results.
### normalize_filters
```python
-normalize_filters(filters: dict[str, Any]) -> dict[str, Any]
+normalize_filters(
+ filters: dict[str, Any], nested_fields: set[str] | None = None
+) -> dict[str, Any]
```
Converts Haystack filters in OpenSearch compatible filters.
+
+**Parameters:**
+
+- **filters** (dict\[str, Any\]) – Haystack filter dictionary.
+- **nested_fields** (set\[str\] | None) – Set of metadata field paths that are mapped as `nested` type in OpenSearch.
+ When provided, conditions targeting sub-fields of these paths are wrapped in `nested` queries.
diff --git a/docs-website/reference_versioned_docs/version-2.24/integrations-api/opensearch.md b/docs-website/reference_versioned_docs/version-2.24/integrations-api/opensearch.md
index ea06e5bf63..a0e5fc9b4b 100644
--- a/docs-website/reference_versioned_docs/version-2.24/integrations-api/opensearch.md
+++ b/docs-website/reference_versioned_docs/version-2.24/integrations-api/opensearch.md
@@ -1220,6 +1220,7 @@ __init__(
use_ssl: bool | None = None,
verify_certs: bool | None = None,
timeout: int | None = None,
+ nested_fields: list[str] | Literal["*"] | None = None,
**kwargs: Any
) -> None
```
@@ -1259,6 +1260,12 @@ For more information on connection parameters, see the [official OpenSearch docu
- **use_ssl** (bool | None) – Whether to use SSL. Defaults to None
- **verify_certs** (bool | None) – Whether to verify certificates. Defaults to None
- **timeout** (int | None) – Timeout in seconds. Defaults to None
+- **nested_fields** (list\[str\] | Literal['\*'] | None) – List of metadata field paths (without the `meta.` prefix) that should be mapped
+ as OpenSearch `nested` type, enabling multi-condition filtering on array-of-objects fields.
+ Pass `"*"` to auto-detect `list[dict]` fields and map them as nested from
+ the first `write_documents` batch.
+ When the index already exists, nested fields are discovered from the live mapping.
+ Defaults to None (no nested support).
- \*\***kwargs** (Any) – Optional arguments that `OpenSearch` takes. For the full list of supported kwargs,
see the [official OpenSearch reference](https://opensearch-project.github.io/opensearch-py/api-ref/clients/opensearch_client.html)
@@ -1837,7 +1844,15 @@ Uses composite aggregations for proper pagination beyond 10k results.
### normalize_filters
```python
-normalize_filters(filters: dict[str, Any]) -> dict[str, Any]
+normalize_filters(
+ filters: dict[str, Any], nested_fields: set[str] | None = None
+) -> dict[str, Any]
```
Converts Haystack filters in OpenSearch compatible filters.
+
+**Parameters:**
+
+- **filters** (dict\[str, Any\]) – Haystack filter dictionary.
+- **nested_fields** (set\[str\] | None) – Set of metadata field paths that are mapped as `nested` type in OpenSearch.
+ When provided, conditions targeting sub-fields of these paths are wrapped in `nested` queries.
diff --git a/docs-website/reference_versioned_docs/version-2.25/integrations-api/opensearch.md b/docs-website/reference_versioned_docs/version-2.25/integrations-api/opensearch.md
index ea06e5bf63..a0e5fc9b4b 100644
--- a/docs-website/reference_versioned_docs/version-2.25/integrations-api/opensearch.md
+++ b/docs-website/reference_versioned_docs/version-2.25/integrations-api/opensearch.md
@@ -1220,6 +1220,7 @@ __init__(
use_ssl: bool | None = None,
verify_certs: bool | None = None,
timeout: int | None = None,
+ nested_fields: list[str] | Literal["*"] | None = None,
**kwargs: Any
) -> None
```
@@ -1259,6 +1260,12 @@ For more information on connection parameters, see the [official OpenSearch docu
- **use_ssl** (bool | None) – Whether to use SSL. Defaults to None
- **verify_certs** (bool | None) – Whether to verify certificates. Defaults to None
- **timeout** (int | None) – Timeout in seconds. Defaults to None
+- **nested_fields** (list\[str\] | Literal['\*'] | None) – List of metadata field paths (without the `meta.` prefix) that should be mapped
+ as OpenSearch `nested` type, enabling multi-condition filtering on array-of-objects fields.
+ Pass `"*"` to auto-detect `list[dict]` fields and map them as nested from
+ the first `write_documents` batch.
+ When the index already exists, nested fields are discovered from the live mapping.
+ Defaults to None (no nested support).
- \*\***kwargs** (Any) – Optional arguments that `OpenSearch` takes. For the full list of supported kwargs,
see the [official OpenSearch reference](https://opensearch-project.github.io/opensearch-py/api-ref/clients/opensearch_client.html)
@@ -1837,7 +1844,15 @@ Uses composite aggregations for proper pagination beyond 10k results.
### normalize_filters
```python
-normalize_filters(filters: dict[str, Any]) -> dict[str, Any]
+normalize_filters(
+ filters: dict[str, Any], nested_fields: set[str] | None = None
+) -> dict[str, Any]
```
Converts Haystack filters in OpenSearch compatible filters.
+
+**Parameters:**
+
+- **filters** (dict\[str, Any\]) – Haystack filter dictionary.
+- **nested_fields** (set\[str\] | None) – Set of metadata field paths that are mapped as `nested` type in OpenSearch.
+ When provided, conditions targeting sub-fields of these paths are wrapped in `nested` queries.
diff --git a/docs-website/reference_versioned_docs/version-2.26/integrations-api/opensearch.md b/docs-website/reference_versioned_docs/version-2.26/integrations-api/opensearch.md
index ea06e5bf63..a0e5fc9b4b 100644
--- a/docs-website/reference_versioned_docs/version-2.26/integrations-api/opensearch.md
+++ b/docs-website/reference_versioned_docs/version-2.26/integrations-api/opensearch.md
@@ -1220,6 +1220,7 @@ __init__(
use_ssl: bool | None = None,
verify_certs: bool | None = None,
timeout: int | None = None,
+ nested_fields: list[str] | Literal["*"] | None = None,
**kwargs: Any
) -> None
```
@@ -1259,6 +1260,12 @@ For more information on connection parameters, see the [official OpenSearch docu
- **use_ssl** (bool | None) – Whether to use SSL. Defaults to None
- **verify_certs** (bool | None) – Whether to verify certificates. Defaults to None
- **timeout** (int | None) – Timeout in seconds. Defaults to None
+- **nested_fields** (list\[str\] | Literal['\*'] | None) – List of metadata field paths (without the `meta.` prefix) that should be mapped
+ as OpenSearch `nested` type, enabling multi-condition filtering on array-of-objects fields.
+ Pass `"*"` to auto-detect `list[dict]` fields and map them as nested from
+ the first `write_documents` batch.
+ When the index already exists, nested fields are discovered from the live mapping.
+ Defaults to None (no nested support).
- \*\***kwargs** (Any) – Optional arguments that `OpenSearch` takes. For the full list of supported kwargs,
see the [official OpenSearch reference](https://opensearch-project.github.io/opensearch-py/api-ref/clients/opensearch_client.html)
@@ -1837,7 +1844,15 @@ Uses composite aggregations for proper pagination beyond 10k results.
### normalize_filters
```python
-normalize_filters(filters: dict[str, Any]) -> dict[str, Any]
+normalize_filters(
+ filters: dict[str, Any], nested_fields: set[str] | None = None
+) -> dict[str, Any]
```
Converts Haystack filters in OpenSearch compatible filters.
+
+**Parameters:**
+
+- **filters** (dict\[str, Any\]) – Haystack filter dictionary.
+- **nested_fields** (set\[str\] | None) – Set of metadata field paths that are mapped as `nested` type in OpenSearch.
+ When provided, conditions targeting sub-fields of these paths are wrapped in `nested` queries.
diff --git a/docs-website/reference_versioned_docs/version-2.27/integrations-api/opensearch.md b/docs-website/reference_versioned_docs/version-2.27/integrations-api/opensearch.md
index ea06e5bf63..a0e5fc9b4b 100644
--- a/docs-website/reference_versioned_docs/version-2.27/integrations-api/opensearch.md
+++ b/docs-website/reference_versioned_docs/version-2.27/integrations-api/opensearch.md
@@ -1220,6 +1220,7 @@ __init__(
use_ssl: bool | None = None,
verify_certs: bool | None = None,
timeout: int | None = None,
+ nested_fields: list[str] | Literal["*"] | None = None,
**kwargs: Any
) -> None
```
@@ -1259,6 +1260,12 @@ For more information on connection parameters, see the [official OpenSearch docu
- **use_ssl** (bool | None) – Whether to use SSL. Defaults to None
- **verify_certs** (bool | None) – Whether to verify certificates. Defaults to None
- **timeout** (int | None) – Timeout in seconds. Defaults to None
+- **nested_fields** (list\[str\] | Literal['\*'] | None) – List of metadata field paths (without the `meta.` prefix) that should be mapped
+ as OpenSearch `nested` type, enabling multi-condition filtering on array-of-objects fields.
+ Pass `"*"` to auto-detect `list[dict]` fields and map them as nested from
+ the first `write_documents` batch.
+ When the index already exists, nested fields are discovered from the live mapping.
+ Defaults to None (no nested support).
- \*\***kwargs** (Any) – Optional arguments that `OpenSearch` takes. For the full list of supported kwargs,
see the [official OpenSearch reference](https://opensearch-project.github.io/opensearch-py/api-ref/clients/opensearch_client.html)
@@ -1837,7 +1844,15 @@ Uses composite aggregations for proper pagination beyond 10k results.
### normalize_filters
```python
-normalize_filters(filters: dict[str, Any]) -> dict[str, Any]
+normalize_filters(
+ filters: dict[str, Any], nested_fields: set[str] | None = None
+) -> dict[str, Any]
```
Converts Haystack filters in OpenSearch compatible filters.
+
+**Parameters:**
+
+- **filters** (dict\[str, Any\]) – Haystack filter dictionary.
+- **nested_fields** (set\[str\] | None) – Set of metadata field paths that are mapped as `nested` type in OpenSearch.
+ When provided, conditions targeting sub-fields of these paths are wrapped in `nested` queries.