def get_across_multiple_pages(query, sort, indexes, doctypes):
    #todo: remove, use walk
    udocs = []

    size = 100
    start = 0
    totalhits = 100
    while start < totalhits:
        search_object = pyes.Search(
            query=query, size=size, start=start)

        if sort:
            result = conn.search(
                query=search_object, indexes=indexes, doctypes=doctypes,
                sort=sort)
        else:
            result = conn.search(
                query=search_object, indexes=indexes, doctypes=doctypes)

        totalhits = result['hits']['total']

        for doc in result['hits']['hits']:
            udocs.append(get_source(doc))

        start += size

    return udocs
def get_docs(doctype, index, sort_field=None, size=None, skip=None):
    query_params = { }

    if size == None:
        size = 2000

    query_params['size'] = size

    if skip:
        query_params['start'] = skip

    if sort_field:
        query_params['sort'] = sort_field

    try:
        query = pyes.MatchAllQuery()
        search = pyes.query.Search(query, **query_params)
        docs = conn.search(search, indices=[index], doc_types=[doctype])
    except pyes.exceptions.SearchPhaseExecutionException:
        return []

    udocs = []

    for d in docs:
        doc = convert_to_legacy_format(d)
        udocs.append(get_source(doc))

    return udocs
def get_versions(doctype, eid):
    q = pyes.TermQuery("meta.original", eid)
    # todo: get rid of fixed size limit
    docs = conn.search(
        query=q, size=1000,
        indexes=[version_index], sort="meta.modified")
    udocs = []
    for d in docs['hits']['hits']:
        udocs.append(get_source(d))
    return udocs