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}