Spaces:
Runtime error
Runtime error
| from elasticsearch import Elasticsearch | |
| from common.common import get_elastic_query | |
| class ElasticsearchClient: | |
| def __init__(self, | |
| host: str = 'localhost', | |
| port: int = 9200, | |
| scheme: str = 'http', | |
| index_name='my_index', | |
| answer=None): | |
| """ | |
| Инициализация клиента Elasticsearch и установка имени индекса. | |
| Args: | |
| host: Адрес хоста Elasticsearch | |
| port: | |
| scheme: | |
| index_name: Название индекса, с которым будет работать клиент | |
| """ | |
| self.es = Elasticsearch([{'host': host, 'port': port, 'scheme': scheme}]) | |
| self.index_name = index_name | |
| self.answer = answer | |
| def set_index(self, index_name): | |
| """ | |
| Метод для изменения индекса. | |
| Args: | |
| index_name: Название индекса | |
| """ | |
| self.index_name = index_name | |
| def search(self, query, size=10): | |
| """ | |
| Выполняет поиск по указанному запросу и возвращает результаты. | |
| Args: | |
| query: Запрос для поиска | |
| size: Максимальное количество возвращаемых результатов | |
| Returns: | |
| Результаты поиска | |
| """ | |
| response = self.es.search(index=self.index_name, body=query, size=size) | |
| return response['hits']['hits'] | |
| def create_document(self, doc_id, document): | |
| """ | |
| Создает новый документ в Elasticsearch. | |
| Args: | |
| doc_id: Данные документа | |
| document: Идентификатор документа | |
| """ | |
| self.es.index(index=self.index_name, id=doc_id, body=document) | |
| def get_document(self, doc_id): | |
| """ | |
| Получает документ по его идентификатору. | |
| Args: | |
| doc_id: Идентификатор документа | |
| Returns: | |
| Найденный документ | |
| """ | |
| return self.es.get(index=self.index_name, id=doc_id) | |
| def delete_document(self, doc_id): | |
| """ | |
| Удаляет документ по его идентификатору. | |
| Args: | |
| doc_id: Идентификатор документа | |
| """ | |
| self.es.delete(index=self.index_name, id=doc_id) | |
| def update_document(self, doc_id, document): | |
| """ | |
| Обновляет данные существующего документа. | |
| Args: | |
| doc_id: Идентификатор документа | |
| document: Обновленные данные документа | |
| """ | |
| self.es.update(index=self.index_name, id=doc_id, body={"doc": document}) | |
| def indices(self): | |
| return self.es.indices.exists(index=self.index_name) | |
| # Пример использования | |
| if __name__ == "__main__": | |
| # Инициализация клиента Elasticsearch | |
| es_client = ElasticsearchClient(index_name='people_search') | |
| # Пример запроса для поиска по имени | |
| search_query = { | |
| "query": { | |
| "match": { | |
| "person_full_name": "Бизнес-куратором каких РОКС НН является Берлин А.В." | |
| } | |
| } | |
| } | |
| # Выполнение поиска и вывод результатов | |
| results = es_client.search(query=get_elastic_query('Бизнес-куратором каких РОКС НН является Берлин А.В.')) | |
| for result in results: | |
| print(result['_source']) | |