File: //home/arjun/projects/buyercall/buyercall/integrations/elasticsearch/__init__.py
import logging
from elasticsearch import Elasticsearch
from elasticsearch_dsl import Search, UpdateByQuery
from buyercall.blueprints import flask_environment
from .documents import ErrorLogger, ActivityLogger, LeadInteraction, InteractionTask
logger = logging.getLogger(__name__)
class ElasticSearchClient:
""" Create all elastic search mappings here"""
es = None
search = None
update = None
def init_app(self, app):
try:
elasticsearch_hosts = app.config.get('ELASTIC_SEARCH_URL', None)
elasticsearch_user = app.config.get('ELASTIC_SEARCH_USERNAME', None)
elasticsearch_password = app.config.get('ELASTIC_SEARCH_PASSWORD', None)
if elasticsearch_hosts:
self.es = Elasticsearch(hosts=elasticsearch_hosts, http_auth=(
elasticsearch_user, elasticsearch_password))
# self.es = Elasticsearch(hosts=elasticsearch_hosts)
self.search = Search(using=self.es)
self.update = UpdateByQuery(using=self.es) # Unable to update index later
# Get current app state
flask_env = flask_environment(app)
# Init Document mappings
# ErrorLogger().init(index=f'buyercall-error-log-{flask_env}', using=self.es)
# ActivityLogger().init(index=f'buyercall-notification-log-{flask_env}', using=self.es)
# LeadInteraction().init(index=f'buyercall-lead-interaction-{flask_env}', using=self.es)
# InteractionTask().init(index=f'buyercall-interaction-task-{flask_env}', using=self.es)
else:
logger.error("ElasticSearch Mapping Error: Hosts not given")
except Exception as ex:
logger.error("ElasticSearch Mapping Error: ", ex)
return