From 595b19f7c7b1247dceddac13e28fc32b9377b335 Mon Sep 17 00:00:00 2001 From: knight Date: Wed, 5 Nov 2025 11:10:56 -0500 Subject: [PATCH] Fix sorting by referenced_by_count with unmapped_type handling MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Added unmapped_type parameter to referenced_by_count sort - This handles documents that don't have the field yet - Updated ingest.py to include reference fields when indexing: * internal_references * internal_references_count * referenced_by * referenced_by_count - Updated index mapping to include reference fields - Documents without the field will sort as 0 (appear last) Fixes BadRequestError: No mapping found for [referenced_by_count] 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- ingest.py | 8 ++++++++ search_app.py | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ingest.py b/ingest.py index ec61478..6a2b9b8 100644 --- a/ingest.py +++ b/ingest.py @@ -90,6 +90,10 @@ def build_bulk_actions( "transcript_full": transcript_full, "transcript_secondary_full": doc.get("transcript_secondary_full"), "transcript_parts": parts, + "internal_references": doc.get("internal_references", []), + "internal_references_count": doc.get("internal_references_count", 0), + "referenced_by": doc.get("referenced_by", []), + "referenced_by_count": doc.get("referenced_by_count", 0), }, } @@ -121,6 +125,10 @@ def ensure_index(client: "Elasticsearch", index: str) -> None: "text": {"type": "text"}, }, }, + "internal_references": {"type": "keyword"}, + "internal_references_count": {"type": "integer"}, + "referenced_by": {"type": "keyword"}, + "referenced_by_count": {"type": "integer"}, } }, ) diff --git a/search_app.py b/search_app.py index c0ecd39..00f2da1 100644 --- a/search_app.py +++ b/search_app.py @@ -400,7 +400,7 @@ def build_query_payload( elif sort == "older": body["sort"] = [{"date": {"order": "asc"}}] elif sort == "referenced": - body["sort"] = [{"referenced_by_count": {"order": "desc"}}] + body["sort"] = [{"referenced_by_count": {"order": "desc", "unmapped_type": "long"}}] return body if query: @@ -505,7 +505,7 @@ def build_query_payload( elif sort == "older": body["sort"] = [{"date": {"order": "asc"}}] elif sort == "referenced": - body["sort"] = [{"referenced_by_count": {"order": "desc"}}] + body["sort"] = [{"referenced_by_count": {"order": "desc", "unmapped_type": "long"}}] return body