Skip to content

Commit 6d4ea49

Browse files
Pass explicit field list in document searches
1 parent f842d9b commit 6d4ea49

File tree

6 files changed

+20
-16
lines changed

6 files changed

+20
-16
lines changed

elasticsearch/dsl/_async/document.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,9 +126,10 @@ def search(
126126
Create an :class:`~elasticsearch.dsl.Search` instance that will search
127127
over this ``Document``.
128128
"""
129-
return AsyncSearch(
129+
s = AsyncSearch(
130130
using=cls._get_using(using), index=cls._default_index(index), doc_type=[cls]
131131
)
132+
return s.source(cls._get_field_names())
132133

133134
@classmethod
134135
async def get(

elasticsearch/dsl/_sync/document.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,9 +120,10 @@ def search(
120120
Create an :class:`~elasticsearch.dsl.Search` instance that will search
121121
over this ``Document``.
122122
"""
123-
return Search(
123+
s = Search(
124124
using=cls._get_using(using), index=cls._default_index(index), doc_type=[cls]
125125
)
126+
return s.source(cls._get_field_names())
126127

127128
@classmethod
128129
def get(

test_elasticsearch/test_dsl/_async/test_document.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -821,10 +821,9 @@ class TypedDocAnnotated(AsyncDocument):
821821

822822
s = doc_class.search().sort(doc_class.st, -doc_class.dt, +doc_class.ob.st)
823823
s.aggs.bucket("terms_agg", "terms", field=doc_class.k1)
824-
assert s.to_dict() == {
825-
"aggs": {"terms_agg": {"terms": {"field": "k1"}}},
826-
"sort": ["st", {"dt": {"order": "desc"}}, "ob.st"],
827-
}
824+
d = s.to_dict()
825+
assert d["aggs"] == {"terms_agg": {"terms": {"field": "k1"}}}
826+
assert d["sort"] == ["st", {"dt": {"order": "desc"}}, "ob.st"]
828827

829828

830829
@pytest.mark.skipif(sys.version_info < (3, 10), reason="requires Python 3.10")

test_elasticsearch/test_dsl/_sync/test_document.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -821,10 +821,9 @@ class TypedDocAnnotated(Document):
821821

822822
s = doc_class.search().sort(doc_class.st, -doc_class.dt, +doc_class.ob.st)
823823
s.aggs.bucket("terms_agg", "terms", field=doc_class.k1)
824-
assert s.to_dict() == {
825-
"aggs": {"terms_agg": {"terms": {"field": "k1"}}},
826-
"sort": ["st", {"dt": {"order": "desc"}}, "ob.st"],
827-
}
824+
d = s.to_dict()
825+
assert d["aggs"] == {"terms_agg": {"terms": {"field": "k1"}}}
826+
assert d["sort"] == ["st", {"dt": {"order": "desc"}}, "ob.st"]
828827

829828

830829
@pytest.mark.skipif(sys.version_info < (3, 10), reason="requires Python 3.10")

test_elasticsearch/test_dsl/test_integration/_async/test_document.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -864,7 +864,7 @@ async def test_dense_vector(
864864
class Doc(AsyncDocument):
865865
float_vector: List[float] = mapped_field(DenseVector())
866866
byte_vector: List[int] = mapped_field(DenseVector(element_type="byte"))
867-
bit_vector: str = mapped_field(DenseVector(element_type="bit"))
867+
bit_vector: List[int] = mapped_field(DenseVector(element_type="bit"))
868868

869869
class Index:
870870
name = "vectors"
@@ -873,13 +873,15 @@ class Index:
873873
await Doc.init()
874874

875875
doc = Doc(
876-
float_vector=[1.0, 1.2, 2.3], byte_vector=[12, 23, 34, 45], bit_vector="12abf0"
876+
float_vector=[1.0, 1.2, 2.3],
877+
byte_vector=[12, 23, 34, 45],
878+
bit_vector=[18, -43, -112],
877879
)
878880
await doc.save(refresh=True)
879881

880882
docs = await Doc.search().execute()
881883
assert len(docs) == 1
882-
assert docs[0].float_vector == doc.float_vector
884+
assert [round(v, 1) for v in docs[0].float_vector] == doc.float_vector
883885
assert docs[0].byte_vector == doc.byte_vector
884886
assert docs[0].bit_vector == doc.bit_vector
885887

test_elasticsearch/test_dsl/test_integration/_sync/test_document.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -852,7 +852,7 @@ def test_dense_vector(client: Elasticsearch, es_version: Tuple[int, ...]) -> Non
852852
class Doc(Document):
853853
float_vector: List[float] = mapped_field(DenseVector())
854854
byte_vector: List[int] = mapped_field(DenseVector(element_type="byte"))
855-
bit_vector: str = mapped_field(DenseVector(element_type="bit"))
855+
bit_vector: List[int] = mapped_field(DenseVector(element_type="bit"))
856856

857857
class Index:
858858
name = "vectors"
@@ -861,13 +861,15 @@ class Index:
861861
Doc.init()
862862

863863
doc = Doc(
864-
float_vector=[1.0, 1.2, 2.3], byte_vector=[12, 23, 34, 45], bit_vector="12abf0"
864+
float_vector=[1.0, 1.2, 2.3],
865+
byte_vector=[12, 23, 34, 45],
866+
bit_vector=[18, -43, -112],
865867
)
866868
doc.save(refresh=True)
867869

868870
docs = Doc.search().execute()
869871
assert len(docs) == 1
870-
assert docs[0].float_vector == doc.float_vector
872+
assert [round(v, 1) for v in docs[0].float_vector] == doc.float_vector
871873
assert docs[0].byte_vector == doc.byte_vector
872874
assert docs[0].bit_vector == doc.bit_vector
873875

0 commit comments

Comments
 (0)