class Client: """ eland client - implemented as facade to control access to Elasticsearch methods """ def __init__(self, es=None): if isinstance(es, Elasticsearch): self._es = es elif isinstance(es, Client): self._es = es._es else: self._es = Elasticsearch(es) def index_create(self, **kwargs): return self._es.indices.create(**kwargs) def index_delete(self, **kwargs): return self._es.indices.delete(**kwargs) def index_exists(self, **kwargs): return self._es.indices.exists(**kwargs) def get_mapping(self, **kwargs): return self._es.indices.get_mapping(**kwargs) def bulk(self, actions, refresh=False): return helpers.bulk(self._es, actions, refresh=refresh) def scan(self, **kwargs): return helpers.scan(self._es, **kwargs) def search(self, **kwargs): return self._es.search(**kwargs) def field_caps(self, **kwargs): return self._es.field_caps(**kwargs) def count(self, **kwargs): count_json = self._es.count(**kwargs) return count_json["count"] def perform_request(self, method, url, headers=None, params=None, body=None): return self._es.transport.perform_request(method, url, headers, params, body)
def retrieve_field_caps(index): es = Elasticsearch( current_app.config.get("ELASTIC").split(","), verify_certs=False, timeout=120 ) field_caps = es.field_caps( index, fields='*', ignore_unavailable=True ) response_json = json.dumps(field_caps) resp = Response(response_json, status=200) resp.headers["Content-Type"] = "application/json" resp.headers["Access-Control-Allow-Origin"] = "*" resp.cache_control.max_age = 60 return resp