def perform_es_search(q, index, start=0, size=10, sort=None, fields=None): """Helper to use elasticsearch_dsl with Spires/Invenio syntax.""" query = IQ(q) search = RecordsSearch(index=index).query(query) if sort: search = search.sort(sort) if fields and isinstance(fields, list): search = search.extra(_source={'include': fields}) return search[start:start + size].execute()