Skip to main content

qdrant_client/qdrant_client/
payload.rs

1use crate::qdrant::{
2    ClearPayloadPoints, DeletePayloadPoints, PointsOperationResponse, SetPayloadPoints,
3};
4use crate::qdrant_client::{Qdrant, QdrantResult};
5
6/// # Payload operations
7///
8/// Manage point payloads.
9///
10/// Documentation: <https://qdrant.tech/documentation/concepts/payload/>
11impl Qdrant {
12    /// Set payload of points.
13    ///
14    /// Sets only the given payload values on a point, leaving other existing payloads in place.
15    ///
16    /// ```no_run
17    ///# use qdrant_client::{Qdrant, QdrantError};
18    /// use qdrant_client::Payload;
19    /// use qdrant_client::qdrant::{PointsIdsList, SetPayloadPointsBuilder};
20    /// use serde_json::json;
21    ///
22    ///# async fn set_payload(client: &Qdrant)
23    ///# -> Result<(), QdrantError> {
24    /// let payload: Payload = json!({
25    ///     "property1": "string",
26    ///     "property2": "string",
27    /// })
28    /// .try_into()
29    /// .unwrap();
30    ///
31    /// client
32    ///     .set_payload(
33    ///         SetPayloadPointsBuilder::new("my_collection", payload)
34    ///             .points_selector(PointsIdsList {
35    ///                 ids: vec![0.into(), 3.into(), 10.into()],
36    ///             })
37    ///             .wait(true),
38    ///     )
39    ///     .await?;
40    ///# Ok(())
41    ///# }
42    /// ```
43    ///
44    /// Documentation: <https://qdrant.tech/documentation/concepts/payload/#set-payload>
45    pub async fn set_payload(
46        &self,
47        request: impl Into<SetPayloadPoints>,
48    ) -> QdrantResult<PointsOperationResponse> {
49        let request = &request.into();
50
51        self.with_points_client(|mut points_api| async move {
52            let result = points_api.set_payload(request.clone()).await?;
53            Ok(result.into_inner())
54        })
55        .await
56    }
57
58    /// Overwrite payload of points.
59    ///
60    /// Sets the given payload values on a point, completely replacing existing payload.
61    ///
62    /// ```no_run
63    ///# use qdrant_client::{Qdrant, QdrantError};
64    /// use qdrant_client::Payload;
65    /// use qdrant_client::qdrant::{
66    ///     points_selector::PointsSelectorOneOf, PointsIdsList, SetPayloadPointsBuilder,
67    /// };
68    /// use serde_json::json;
69    ///
70    ///# async fn overwrite_payload(client: &Qdrant)
71    ///# -> Result<(), QdrantError> {
72    /// let payload: Payload = json!({
73    ///     "property1": "string",
74    ///     "property2": "string",
75    /// })
76    /// .try_into()
77    /// .unwrap();
78    ///
79    /// client
80    ///     .overwrite_payload(
81    ///         SetPayloadPointsBuilder::new("my_collection", payload)
82    ///             .points_selector(PointsSelectorOneOf::Points(PointsIdsList {
83    ///                 ids: vec![0.into(), 3.into(), 10.into()],
84    ///             }))
85    ///             .wait(true),
86    ///     )
87    ///     .await?;
88    ///# Ok(())
89    ///# }
90    /// ```
91    ///
92    /// Documentation: <https://qdrant.tech/documentation/concepts/payload/#overwrite-payload>
93    pub async fn overwrite_payload(
94        &self,
95        request: impl Into<SetPayloadPoints>,
96    ) -> QdrantResult<PointsOperationResponse> {
97        let request = &request.into();
98
99        self.with_points_client(|mut points_api| async move {
100            let result = points_api.overwrite_payload(request.clone()).await?;
101            Ok(result.into_inner())
102        })
103        .await
104    }
105
106    /// Delete specified payload keys of points.
107    ///
108    /// ```no_run
109    ///# use qdrant_client::{Qdrant, QdrantError};
110    /// use qdrant_client::qdrant::{DeletePayloadPointsBuilder, PointsIdsList};
111    ///
112    ///# async fn delete_payload(client: &Qdrant)
113    ///# -> Result<(), QdrantError> {
114    /// client
115    ///     .delete_payload(
116    ///         DeletePayloadPointsBuilder::new(
117    ///             "my_collection",
118    ///             vec!["color".to_string(), "price".to_string()],
119    ///         )
120    ///         .points_selector(PointsIdsList {
121    ///             ids: vec![0.into(), 3.into(), 100.into()],
122    ///         })
123    ///         .wait(true),
124    ///     )
125    ///     .await?;
126    ///# Ok(())
127    ///# }
128    /// ```
129    ///
130    /// Documentation: <https://qdrant.tech/documentation/concepts/payload/#delete-payload-keys>
131    pub async fn delete_payload(
132        &self,
133        request: impl Into<DeletePayloadPoints>,
134    ) -> QdrantResult<PointsOperationResponse> {
135        let request = &request.into();
136
137        self.with_points_client(|mut points_api| async move {
138            let result = points_api.delete_payload(request.clone()).await?;
139            Ok(result.into_inner())
140        })
141        .await
142    }
143
144    /// Clear all payload of points.
145    ///
146    /// ```no_run
147    ///# use qdrant_client::{Qdrant, QdrantError};
148    /// use qdrant_client::qdrant::{ClearPayloadPointsBuilder, PointsIdsList};
149    ///
150    ///# async fn clear_payload(client: &Qdrant)
151    ///# -> Result<(), QdrantError> {
152    /// client
153    ///     .clear_payload(ClearPayloadPointsBuilder::new("my_collection").points(
154    ///         PointsIdsList {
155    ///             ids: vec![0.into(), 3.into(), 100.into()],
156    ///         },
157    ///     ))
158    ///     .await?;
159    ///# Ok(())
160    ///# }
161    /// ```
162    ///
163    /// Documentation: <https://qdrant.tech/documentation/concepts/payload/#clear-payload>
164    pub async fn clear_payload(
165        &self,
166        request: impl Into<ClearPayloadPoints>,
167    ) -> QdrantResult<PointsOperationResponse> {
168        let request = &request.into();
169
170        self.with_points_client(|mut points_api| async move {
171            let result = points_api.clear_payload(request.clone()).await?;
172            Ok(result.into_inner())
173        })
174        .await
175    }
176}