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()
def get_institution_experiments_from_es(icn): """ Get experiments from a given institution. To avoid killing ElasticSearch the number of experiments is limited. :param icn: Institution canonical name. :type icn: string """ query = { "term": {"affiliation": icn} } search = RecordsSearch(index="records-experiments").query(query)[:100] search = search.sort('-earliest_date') return search.execute().hits
def test_empty_query(app): """Test building an empty query.""" q = RecordsSearch() if ES_VERSION[0] >= 7: q.to_dict() == {} else: q.to_dict() == {'query': {'match_all': {}}} q = RecordsSearch.faceted_search('') if ES_VERSION[0] >= 7: q._s.to_dict() == {'highlight': {'fields': {'*': {}}}} else: q._s.to_dict() == {'query': {'match_all': {}}} q = RecordsSearch()[10] assert q.to_dict()['from'] == 10 assert q.to_dict()['size'] == 1 q = q[10:20] assert q.to_dict()['from'] == 10 assert q.to_dict()['size'] == 10 q = q.sort({'field1': {'order': 'asc'}}) assert q.to_dict()['sort'][0] == {'field1': {'order': 'asc'}} q = q.sort() assert 'sort' not in q.to_dict() q = q.sort('-field1') assert q.to_dict()['sort'][0] == {'field1': {'order': 'desc'}} q = q.sort('field2', {'field3': {'order': 'asc'}}) assert q.to_dict()['sort'][0] == 'field2' assert q.to_dict()['sort'][1] == {'field3': {'order': 'asc'}} q.sort() q = RecordsSearch() q = q.highlight('field1', index_options='offsets') assert len(q.to_dict()['highlight']['fields']) == 1 assert q.to_dict()['highlight']['fields']['field1'] == { 'index_options': 'offsets' } q = q.highlight('field2') assert len(q.to_dict()['highlight']['fields']) == 2 assert q.to_dict()['highlight']['fields']['field1'] == { 'index_options': 'offsets' } assert q.to_dict()['highlight']['fields']['field2'] == {} q = q.highlight() assert 'highligth' not in q.to_dict()
def test_empty_query(app): """Test building an empty query.""" with app.app_context(): q = RecordsSearch() assert q.to_dict()['query'] == {'match_all': {}} q = RecordsSearch.faceted_search('') assert q._s.to_dict()['query'] == {'match_all': {}} q = RecordsSearch()[10] assert q.to_dict()['from'] == 10 assert q.to_dict()['size'] == 1 q = q[10:20] assert q.to_dict()['from'] == 10 assert q.to_dict()['size'] == 10 q = q.sort({'field1': {'order': 'asc'}}) assert q.to_dict()['sort'][0] == {'field1': {'order': 'asc'}} q = q.sort() assert 'sort' not in q.to_dict() q = q.sort('-field1') assert q.to_dict()['sort'][0] == {'field1': {'order': 'desc'}} q = q.sort('field2', {'field3': {'order': 'asc'}}) assert q.to_dict()['sort'][0] == 'field2' assert q.to_dict()['sort'][1] == {'field3': {'order': 'asc'}} q.sort() q = RecordsSearch() q = q.highlight('field1', index_options='offsets') assert len(q.to_dict()['highlight']['fields']) == 1 assert q.to_dict()['highlight']['fields']['field1'] == { 'index_options': 'offsets' } q = q.highlight('field2') assert len(q.to_dict()['highlight']['fields']) == 2 assert q.to_dict()['highlight']['fields']['field1'] == { 'index_options': 'offsets' } assert q.to_dict()['highlight']['fields']['field2'] == {} q = q.highlight() assert 'highligth' not in q.to_dict()