Fix sorting by referenced_by_count with unmapped_type handling

- 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 <noreply@anthropic.com>
This commit is contained in:
knight 2025-11-05 11:10:56 -05:00
parent d616b87701
commit 595b19f7c7
2 changed files with 10 additions and 2 deletions

View File

@ -90,6 +90,10 @@ def build_bulk_actions(
"transcript_full": transcript_full, "transcript_full": transcript_full,
"transcript_secondary_full": doc.get("transcript_secondary_full"), "transcript_secondary_full": doc.get("transcript_secondary_full"),
"transcript_parts": parts, "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"}, "text": {"type": "text"},
}, },
}, },
"internal_references": {"type": "keyword"},
"internal_references_count": {"type": "integer"},
"referenced_by": {"type": "keyword"},
"referenced_by_count": {"type": "integer"},
} }
}, },
) )

View File

@ -400,7 +400,7 @@ def build_query_payload(
elif sort == "older": elif sort == "older":
body["sort"] = [{"date": {"order": "asc"}}] body["sort"] = [{"date": {"order": "asc"}}]
elif sort == "referenced": elif sort == "referenced":
body["sort"] = [{"referenced_by_count": {"order": "desc"}}] body["sort"] = [{"referenced_by_count": {"order": "desc", "unmapped_type": "long"}}]
return body return body
if query: if query:
@ -505,7 +505,7 @@ def build_query_payload(
elif sort == "older": elif sort == "older":
body["sort"] = [{"date": {"order": "asc"}}] body["sort"] = [{"date": {"order": "asc"}}]
elif sort == "referenced": elif sort == "referenced":
body["sort"] = [{"referenced_by_count": {"order": "desc"}}] body["sort"] = [{"referenced_by_count": {"order": "desc", "unmapped_type": "long"}}]
return body return body