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.