Skip to content

Commit 889775c

Browse files
Added inner_hits option to kNN search (#1777) (#1796)
(cherry picked from commit 9ade575) Co-authored-by: Miguel Grinberg <[email protected]>
1 parent e30129d commit 889775c

File tree

3 files changed

+8
-0
lines changed

3 files changed

+8
-0
lines changed

elasticsearch_dsl/search_base.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -504,6 +504,7 @@ def knn(
504504
boost=None,
505505
filter=None,
506506
similarity=None,
507+
inner_hits=None,
507508
):
508509
"""
509510
Add a k-nearest neighbor (kNN) search.
@@ -516,6 +517,7 @@ def knn(
516517
:arg boost: A floating-point boost factor for kNN scores
517518
:arg filter: query to filter the documents that can match
518519
:arg similarity: the minimum similarity required for a document to be considered a match, as a float value
520+
:arg inner_hits: retrieve hits from nested field
519521
520522
Example::
521523
@@ -550,6 +552,8 @@ def knn(
550552
s._knn[-1]["filter"] = filter
551553
if similarity is not None:
552554
s._knn[-1]["similarity"] = similarity
555+
if inner_hits is not None:
556+
s._knn[-1]["inner_hits"] = inner_hits
553557
return s
554558

555559
def rank(self, rrf=None):

tests/_async/test_search.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,7 @@ def test_knn():
266266
query_vector_builder={
267267
"text_embedding": {"model_id": "foo", "model_text": "search text"}
268268
},
269+
inner_hits={"size": 1},
269270
)
270271
assert {
271272
"knn": [
@@ -283,6 +284,7 @@ def test_knn():
283284
"text_embedding": {"model_id": "foo", "model_text": "search text"}
284285
},
285286
"boost": 0.8,
287+
"inner_hits": {"size": 1},
286288
},
287289
]
288290
} == s.to_dict()

tests/_sync/test_search.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,7 @@ def test_knn():
266266
query_vector_builder={
267267
"text_embedding": {"model_id": "foo", "model_text": "search text"}
268268
},
269+
inner_hits={"size": 1},
269270
)
270271
assert {
271272
"knn": [
@@ -283,6 +284,7 @@ def test_knn():
283284
"text_embedding": {"model_id": "foo", "model_text": "search text"}
284285
},
285286
"boost": 0.8,
287+
"inner_hits": {"size": 1},
286288
},
287289
]
288290
} == s.to_dict()

0 commit comments

Comments
 (0)