Exemplo n.º 1
0
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)
Exemplo n.º 2
0
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