Untitled
unknown
plain_text
a year ago
1.6 kB
5
Indexable
import boto3 from pydantic import BaseModel from typing import List import json class PeriodSearchResultItem(BaseModel): accounting_period_name: str accounting_period_end_date: str accounting_period_id: str accounting_period_start_date: str class PeriodSearchResults(BaseModel): features: List[PeriodSearchResultItem] class PeriodSearchParameters(BaseModel): query: str fields: List[str] = ["accounting_period_name"] sort: str = '_score desc' size: int = 10 class PeriodCloudSearchClient: def __init__(self, domain_endpoint: str): self.client = boto3.client('cloudsearchdomain', endpoint_url=domain_endpoint) def search(self, params: PeriodSearchParameters) -> PeriodSearchResults: response = self.client.search( query=params.query, queryParser='simple', sort=params.sort, size=params.size, q_options=json.dumps({"fields": params.fields}) ) search_results = [] for hit in response['hits']['hit']: search_results.append(PeriodSearchResultItem( accounting_period_name=hit['fields'].get('accounting_period_name', [''])[0], accounting_period_end_date=hit['fields'].get('accounting_period_end_date', [''])[0], accounting_period_id=hit['fields'].get('accounting_period_id', [''])[0], accounting_period_start_date=hit['fields'].get('accounting_period_start_date', [''])[0] )) return PeriodSearchResults( features=search_results )
Editor is loading...
Leave a Comment