Skip to content

Commit 0939ec4

Browse files
Support InstrumentedField in queries and aggregations (#1866) (#1870)
(cherry picked from commit 1b085ff) Co-authored-by: Miguel Grinberg <[email protected]>
1 parent 386e4f8 commit 0939ec4

File tree

3 files changed

+14
-2
lines changed

3 files changed

+14
-2
lines changed

Diff for: elasticsearch_dsl/utils.py

+4
Original file line numberDiff line numberDiff line change
@@ -311,8 +311,12 @@ def __init__(self, _expand__to_dot: Optional[bool] = None, **params: Any) -> Non
311311
_expand__to_dot = EXPAND__TO_DOT
312312
self._params: Dict[str, Any] = {}
313313
for pname, pvalue in params.items():
314+
# expand "__" to dots
314315
if "__" in pname and _expand__to_dot:
315316
pname = pname.replace("__", ".")
317+
# convert instrumented fields to string
318+
if type(pvalue).__name__ == "InstrumentedField":
319+
pvalue = str(pvalue)
316320
self._setattr(pname, pvalue)
317321

318322
def _repr_params(self) -> str:

Diff for: tests/_async/test_document.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -776,7 +776,11 @@ class TypedDoc(AsyncDocument):
776776
}
777777

778778
s = TypedDoc.search().sort(TypedDoc.st, -TypedDoc.dt, +TypedDoc.ob.st)
779-
assert s.to_dict() == {"sort": ["st", {"dt": {"order": "desc"}}, "ob.st"]}
779+
s.aggs.bucket("terms_agg", "terms", field=TypedDoc.k1)
780+
assert s.to_dict() == {
781+
"aggs": {"terms_agg": {"terms": {"field": "k1"}}},
782+
"sort": ["st", {"dt": {"order": "desc"}}, "ob.st"],
783+
}
780784

781785

782786
def test_instrumented_field() -> None:

Diff for: tests/_sync/test_document.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -776,7 +776,11 @@ class TypedDoc(Document):
776776
}
777777

778778
s = TypedDoc.search().sort(TypedDoc.st, -TypedDoc.dt, +TypedDoc.ob.st)
779-
assert s.to_dict() == {"sort": ["st", {"dt": {"order": "desc"}}, "ob.st"]}
779+
s.aggs.bucket("terms_agg", "terms", field=TypedDoc.k1)
780+
assert s.to_dict() == {
781+
"aggs": {"terms_agg": {"terms": {"field": "k1"}}},
782+
"sort": ["st", {"dt": {"order": "desc"}}, "ob.st"],
783+
}
780784

781785

782786
def test_instrumented_field() -> None:

0 commit comments

Comments
 (0)