elasticsearch.py 947 B

123456789101112131415161718192021222324252627
  1. from __future__ import annotations
  2. from pydantic import ValidationError
  3. from quart import Blueprint, jsonify
  4. from app.api.service import ElasticSearchManager
  5. from app.api.v1.utils import ApiDependencies
  6. from app.api.v1.utils import ElasticSearchRequest
  7. from app.api.v1.utils import parse_json, validation_error_response
  8. def create_elasticsearch_bp(deps: ApiDependencies) -> Blueprint:
  9. bp = Blueprint("elasticsearch", __name__)
  10. @bp.route("/es_search", methods=["POST"])
  11. async def es_search():
  12. try:
  13. obj, _ = await parse_json(ElasticSearchRequest)
  14. except ValidationError as e:
  15. payload, status = validation_error_response(e)
  16. return jsonify(payload), status
  17. manager = ElasticSearchManager(config=deps.config)
  18. result = await manager.search(keywords=obj.keywords, size=obj.size)
  19. return jsonify({"code": 0, "message": "success", "data": result})
  20. return bp