diff --git a/cds_ils/cli.py b/cds_ils/cli.py index e46656a42..47c16d0fe 100644 --- a/cds_ils/cli.py +++ b/cds_ils/cli.py @@ -17,8 +17,7 @@ import arrow import click import pkg_resources -from elasticsearch import VERSION as ES_VERSION -from elasticsearch_dsl import Q +from invenio_search.engine import dsl from flask import current_app from flask.cli import with_appcontext from invenio_accounts.models import User @@ -457,8 +456,8 @@ def clean_loans(user_email, given_date): .filter( "bool", filter=[ - Q("term", patron_pid=patron_pid), - Q("term", _created=given_date), + dsl.Q("term", patron_pid=patron_pid), + dsl.Q("term", _created=given_date), ], ) .scan() @@ -477,8 +476,8 @@ def clean_loans(user_email, given_date): .filter( "bool", filter=[ - Q("term", patron_pid=patron_pid), - Q("term", _created=given_date), + dsl.Q("term", patron_pid=patron_pid), + dsl.Q("term", _created=given_date), ], ) .scan() diff --git a/cds_ils/importer/documents/api.py b/cds_ils/importer/documents/api.py index ecff80b8c..f593e6c02 100644 --- a/cds_ils/importer/documents/api.py +++ b/cds_ils/importer/documents/api.py @@ -6,8 +6,7 @@ # the terms of the MIT License; see LICENSE file for more details. """CDS-ILS Importer module.""" -from elasticsearch_dsl import Q -from elasticsearch_dsl.query import Match +from invenio_search.engine import dsl from invenio_app_ils.proxies import current_app_ils @@ -17,8 +16,8 @@ def search_documents_by_isbn(isbn): search = document_search.query( "bool", must=[ - Q("term", identifiers__scheme="ISBN"), - Q("term", identifiers__value=isbn), + dsl.Q("term", identifiers__scheme="ISBN"), + dsl.Q("term", identifiers__value=isbn), ], ) return search @@ -30,8 +29,8 @@ def search_documents_by_doi(doi): search = document_search.query( "bool", must=[ - Q("term", identifiers__scheme="DOI"), - Q("term", identifiers__value=doi), + dsl.Q("term", identifiers__scheme="DOI"), + dsl.Q("term", identifiers__value=doi), ], ) return search @@ -61,7 +60,7 @@ def fuzzy_search_document(title, authors): # https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-fuzzy-query.html document_search = current_app_ils.document_search_cls() search = document_search.query( - Match( + dsl.query.Match( title__keyword={ "fuzziness": "AUTO", "fuzzy_transpositions": "true", @@ -69,7 +68,7 @@ def fuzzy_search_document(title, authors): } ) ).filter( - Match( + dsl.query.Match( authors__full_name={ "query": " ".join(authors), "fuzziness": "AUTO", diff --git a/cds_ils/importer/documents/importer.py b/cds_ils/importer/documents/importer.py index cc1b8e104..9a023150a 100644 --- a/cds_ils/importer/documents/importer.py +++ b/cds_ils/importer/documents/importer.py @@ -12,7 +12,7 @@ import click from dateutil import parser -from elasticsearch import TransportError +from invenio_search.engine import search from invenio_app_ils.documents.api import DocumentIdProvider from invenio_app_ils.errors import IlsValidationError from invenio_app_ils.proxies import current_app_ils @@ -410,7 +410,7 @@ def fuzzy_match_documents(self): authors = [author["full_name"] for author in self.json_data.get("authors", [])] try: fuzzy_results = fuzzy_search_document(title, authors).scan() - except TransportError: + except search.TransportError: raise SimilarityMatchUnavailable return fuzzy_results diff --git a/cds_ils/importer/importer.py b/cds_ils/importer/importer.py index bcd33f8e9..7f0c952a8 100644 --- a/cds_ils/importer/importer.py +++ b/cds_ils/importer/importer.py @@ -9,7 +9,7 @@ import time import pkg_resources -from elasticsearch import TransportError +from invenio_search.engine import search from flask import current_app from invenio_app_ils.errors import RecordHasReferencesError from invenio_app_ils.proxies import current_app_ils @@ -162,7 +162,7 @@ def find_partial_matches(self, pids_list=None, exact_match=None): for match in fuzzy_results if match.pid != exact_match ] - except TransportError: + except search.TransportError: raise SimilarityMatchUnavailable return fuzzy_matches + amibiguous_matches diff --git a/cds_ils/importer/series/api.py b/cds_ils/importer/series/api.py index a69100be0..3a303b044 100644 --- a/cds_ils/importer/series/api.py +++ b/cds_ils/importer/series/api.py @@ -7,7 +7,7 @@ """CDS-ILS Series Importer api.""" -from elasticsearch_dsl import Q +from invenio_search.engine import dsl from invenio_app_ils.proxies import current_app_ils @@ -17,8 +17,8 @@ def search_series_by_isbn(isbn): search = series_search.query( "bool", must=[ - Q("term", identifiers__scheme="ISBN"), - Q("term", identifiers__value=isbn), + dsl.Q("term", identifiers__scheme="ISBN"), + dsl.Q("term", identifiers__value=isbn), ], ) return search @@ -30,8 +30,8 @@ def search_series_by_issn(issn): search = series_search.query( "bool", must=[ - Q("term", identifiers__scheme="ISSN"), - Q("term", identifiers__value=issn), + dsl.Q("term", identifiers__scheme="ISSN"), + dsl.Q("term", identifiers__value=issn), ], ) return search diff --git a/cds_ils/migrator/documents/api.py b/cds_ils/migrator/documents/api.py index d0e7d31d3..9f90dd9a5 100644 --- a/cds_ils/migrator/documents/api.py +++ b/cds_ils/migrator/documents/api.py @@ -9,7 +9,7 @@ """CDS-ILS document migrator API.""" import click -from elasticsearch_dsl import Q +from invenio_search.engine import dsl from invenio_app_ils.proxies import current_app_ils from cds_ils.migrator.errors import DocumentMigrationError @@ -49,7 +49,7 @@ def get_all_documents_with_files(): search = document_search.filter( "bool", filter=[ - Q("term", _migration__has_files=True), + dsl.Q("term", _migration__has_files=True), ], ) return search @@ -61,7 +61,7 @@ def get_documents_with_proxy_eitems(): search = document_search.filter( "bool", filter=[ - Q("term", _migration__eitems_has_proxy=True), + dsl.Q("term", _migration__eitems_has_proxy=True), ], ) return search @@ -73,7 +73,7 @@ def get_documents_with_ebl_eitems(): search = document_search.filter( "bool", filter=[ - Q("term", _migration__eitems_has_ebl=True), + dsl.Q("term", _migration__eitems_has_ebl=True), ], ) return search @@ -85,7 +85,7 @@ def get_documents_with_safari_eitems(): search = document_search.filter( "bool", filter=[ - Q("term", _migration__eitems_has_safari=True), + dsl.Q("term", _migration__eitems_has_safari=True), ], ) return search @@ -97,7 +97,7 @@ def get_documents_with_external_eitems(): search = document_search.filter( "bool", filter=[ - Q("term", _migration__eitems_has_external=True), + dsl.Q("term", _migration__eitems_has_external=True), ], ) return search @@ -109,7 +109,7 @@ def search_documents_with_siblings_relations(): search = document_search.filter( "bool", filter=[ - Q("term", _migration__has_related=True), + dsl.Q("term", _migration__has_related=True), ], ) return search diff --git a/cds_ils/migrator/internal_locations/api.py b/cds_ils/migrator/internal_locations/api.py index 390315a10..033ff0d4c 100644 --- a/cds_ils/migrator/internal_locations/api.py +++ b/cds_ils/migrator/internal_locations/api.py @@ -11,7 +11,7 @@ import json import click -from elasticsearch_dsl import Q +from invenio_search.engine import dsl from invenio_app_ils.internal_locations.api import InternalLocation from invenio_app_ils.internal_locations.search import InternalLocationSearch from invenio_app_ils.proxies import current_app_ils @@ -74,7 +74,7 @@ def import_internal_locations_from_json( def get_internal_location_by_legacy_recid(legacy_recid): """Search for internal location by legacy id.""" search = InternalLocationSearch().query( - "bool", filter=[Q("term", legacy_ids=legacy_recid)] + "bool", filter=[dsl.Q("term", legacy_ids=legacy_recid)] ) result = search.execute() hits_total = result.hits.total.value diff --git a/cds_ils/migrator/items/api.py b/cds_ils/migrator/items/api.py index 218463dc4..d77ac7792 100644 --- a/cds_ils/migrator/items/api.py +++ b/cds_ils/migrator/items/api.py @@ -12,7 +12,7 @@ import logging import click -from elasticsearch_dsl import Q +from invenio_search.engine import dsl from invenio_app_ils.proxies import current_app_ils from invenio_db import db @@ -103,7 +103,7 @@ def get_item_by_barcode(barcode, raise_exception=True): search = current_app_ils.item_search_cls().query( "bool", filter=[ - Q("term", barcode=barcode), + dsl.Q("term", barcode=barcode), ], ) result = search.execute() diff --git a/cds_ils/migrator/patrons/api.py b/cds_ils/migrator/patrons/api.py index 2014bbbfb..5311335c4 100644 --- a/cds_ils/migrator/patrons/api.py +++ b/cds_ils/migrator/patrons/api.py @@ -12,7 +12,7 @@ import logging import click -from elasticsearch_dsl import Q +from invenio_search.engine import dsl from flask import current_app from invenio_app_ils.patrons.indexer import PatronIndexer from invenio_app_ils.patrons.search import PatronsSearch @@ -74,7 +74,7 @@ def get_user_by_person_id(person_id): search = PatronsSearch().query( "bool", filter=[ - Q("term", person_id=person_id), + dsl.Q("term", person_id=person_id), ], ) results = search.execute() @@ -95,7 +95,7 @@ def get_user_by_legacy_id(legacy_id): search = PatronsSearch().query( "bool", filter=[ - Q("term", legacy_id=legacy_id), + dsl.Q("term", legacy_id=legacy_id), ], ) results = search.execute() diff --git a/cds_ils/migrator/relations/api.py b/cds_ils/migrator/relations/api.py index 1a8d821ab..aa8317712 100644 --- a/cds_ils/migrator/relations/api.py +++ b/cds_ils/migrator/relations/api.py @@ -10,7 +10,7 @@ import logging import click -from elasticsearch_dsl import Q +from invenio_search.engine import dsl from flask import current_app from invenio_app_ils.proxies import current_app_ils from invenio_app_ils.records_relations.api import ( @@ -223,8 +223,8 @@ def link_record_and_journal(record_cls, search): series_search.filter( "bool", filter=[ - Q("term", mode_of_issuance="MULTIPART_MONOGRAPH"), - Q("term", _migration__has_serial=True), + dsl.Q("term", mode_of_issuance="MULTIPART_MONOGRAPH"), + dsl.Q("term", _migration__has_serial=True), ], ), ) diff --git a/cds_ils/migrator/series/api.py b/cds_ils/migrator/series/api.py index 6617ce066..6f7db93a4 100644 --- a/cds_ils/migrator/series/api.py +++ b/cds_ils/migrator/series/api.py @@ -11,7 +11,7 @@ from copy import deepcopy import click -from elasticsearch_dsl import Q +from invenio_search.engine import dsl from flask import current_app from invenio_app_ils.proxies import current_app_ils from invenio_app_ils.series.api import Series @@ -195,8 +195,8 @@ def get_serials_by_child_recid(recid): search = series_search.query( "bool", filter=[ - Q("term", mode_of_issuance="SERIAL"), - Q("term", _migration__children=recid), + dsl.Q("term", mode_of_issuance="SERIAL"), + dsl.Q("term", _migration__children=recid), ], ) for hit in search.params(scroll="1h").scan(): @@ -274,7 +274,7 @@ def search_series_with_relations(): search = series_search.filter( "bool", filter=[ - Q("term", _migration__has_related=True), + dsl.Q("term", _migration__has_related=True), ], ) return search