elasticsearch_dsl/search/queries/params/
inner_hits.rs1use crate::search::*;
2use crate::util::*;
3use crate::Set;
4
5#[derive(Debug, Default, Clone, PartialEq, Serialize)]
24pub struct InnerHits {
25 #[serde(skip_serializing_if = "ShouldSkip::should_skip")]
26 _source: Option<SourceFilter>,
27
28 #[serde(skip_serializing_if = "ShouldSkip::should_skip")]
29 name: Option<String>,
30
31 #[serde(skip_serializing_if = "ShouldSkip::should_skip")]
32 from: Option<u64>,
33
34 #[serde(skip_serializing_if = "ShouldSkip::should_skip")]
35 size: Option<u64>,
36
37 #[serde(skip_serializing_if = "ShouldSkip::should_skip")]
38 sort: SortCollection,
39
40 #[serde(skip_serializing_if = "ShouldSkip::should_skip")]
41 highlight: Option<Highlight>,
42
43 #[serde(skip_serializing_if = "ShouldSkip::should_skip")]
44 docvalue_fields: Set<String>,
45
46 #[serde(skip_serializing_if = "ShouldSkip::should_skip")]
47 collapse: Option<InnerHitsCollapse>,
48}
49
50#[derive(Debug, Default, Clone, PartialEq, Serialize)]
51struct InnerHitsCollapse {
52 field: String,
53}
54
55impl InnerHits {
56 pub fn new() -> Self {
58 Default::default()
59 }
60
61 pub fn source<T>(mut self, source: T) -> Self
63 where
64 T: Into<SourceFilter>,
65 {
66 self._source = Some(source.into());
67 self
68 }
69
70 pub fn name<T>(mut self, name: T) -> Self
72 where
73 T: ToString,
74 {
75 self.name = Some(name.to_string());
76 self
77 }
78
79 pub fn from(mut self, from: u64) -> Self {
83 self.from = Some(from);
84 self
85 }
86
87 pub fn size(mut self, size: u64) -> Self {
91 self.size = Some(size);
92 self
93 }
94
95 pub fn sort<T>(mut self, sort: T) -> Self
97 where
98 T: IntoIterator,
99 T::Item: Into<Sort>,
100 {
101 self.sort.extend(sort);
102 self
103 }
104
105 pub fn highlight<T>(mut self, highlight: T) -> Self
107 where
108 T: Into<Highlight>,
109 {
110 self.highlight = Some(highlight.into());
111 self
112 }
113
114 pub fn docvalue_fields<T>(mut self, docvalue_fields: T) -> Self
116 where
117 T: IntoIterator,
118 T::Item: ToString,
119 {
120 self.docvalue_fields
121 .extend(docvalue_fields.into_iter().map(|x| x.to_string()));
122 self
123 }
124
125 pub fn collapse<T>(mut self, collapse: T) -> Self
127 where
128 T: ToString,
129 {
130 self.collapse = Some(InnerHitsCollapse {
131 field: collapse.to_string(),
132 });
133 self
134 }
135}