From 9d7261db8a4c3569b4a7f2ffe5ed3ad09412f73a Mon Sep 17 00:00:00 2001 From: Miguel Grinberg Date: Mon, 22 Apr 2024 11:10:01 +0100 Subject: [PATCH] knn as a query option (#1781) Fixes #1770 (cherry picked from commit 9a53a5bc3e469be529a13b77e3952c95c4dcbc57) --- elasticsearch_dsl/query.py | 4 ++++ tests/test_query.py | 11 +++++++++++ 2 files changed, 15 insertions(+) diff --git a/elasticsearch_dsl/query.py b/elasticsearch_dsl/query.py index f0ec5bc3..0b5be820 100644 --- a/elasticsearch_dsl/query.py +++ b/elasticsearch_dsl/query.py @@ -416,6 +416,10 @@ class Intervals(Query): name = "intervals" +class Knn(Query): + name = "knn" + + class Limit(Query): name = "limit" diff --git a/tests/test_query.py b/tests/test_query.py index 4571e227..fc4e430b 100644 --- a/tests/test_query.py +++ b/tests/test_query.py @@ -612,3 +612,14 @@ def test_expand_double_underscore_to_dot_setting(): q = query.Term(comment__count=2) assert q.to_dict() == {"term": {"comment__count": 2}} utils.EXPAND__TO_DOT = True + + +def test_knn_query(): + q = query.Knn(field="image-vector", query_vector=[-5, 9, -12], num_candidates=10) + assert q.to_dict() == { + "knn": { + "field": "image-vector", + "query_vector": [-5, 9, -12], + "num_candidates": 10, + } + }