Skip to content

Commit 7b084ca

Browse files
Support InstrumentedField in queries and aggregations
1 parent f18dbbd commit 7b084ca

File tree

3 files changed

+14
-2
lines changed

3 files changed

+14
-2
lines changed

elasticsearch_dsl/utils.py

Lines changed: 4 additions & 0 deletions
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:

tests/_async/test_document.py

Lines changed: 5 additions & 1 deletion
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:

tests/_sync/test_document.py

Lines changed: 5 additions & 1 deletion
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)