Skip to main content

Extracts facets from datasets to add to elasticsearch.

Project description

CEDA Facet Scanner

Static Badge GitHub Release PyPI version

CEDA Dependencies

Static Badge Static Badge

Takes datasets and extracts the facets from the files/filepath. The scanner works to map a file path to the specific handler for that collection of files. For example, ESA CCI datasets are scanned by the cci handler. This is because each collection of datasets will have different characteristics and will need to be treated in a different way.

ReadTheDocs Documentation

Installation

Create a Python virtual environment: Must be Python 3

python -m venv venv
source venv/bin/activate

This package can be installed with the following:

git clone https://github.com/facet-scanner
cd facet-scanner
pip install -e .

NOTE: As of 22nd Jan 2025 the facet-scanner repository has been upgraded for use with Poetry version 2. This requires the use of an additional requirements_fix.txt patch while a solution for poetry dependencies in github is worked on. The above installation MUST be supplemented with:

pip install -r requirements_fix.txt

This is a temporary fix and will be removed when poetry is patched.

Running the code

facet_scanner (path_to_scan) [--conf <path_to_config.ini>]

Required:

Argument Description
path_to_scan File path in the archive to use as the basis of the scan. The scanner will take this path and retrieve all the files in the elasticsearch index at this point.

Optional:

Option No. Arguments Description
--conf 1 Allows you to set a different location for the config file.This defaults to ../conf/facet_scanner.ini relative to the script.

Adding a new Collection

Adding a Handler Documentation

Facet Indexing with Rabbit

This repo also provides the code to read from the rabbit queue and process updates to the files index, adding facets.

Watched events:

  • DEPOSIT

Exposed Queue Consumer Classes:

  • rabbit_facet_indexer.queue_consumers.FacetScannerQueueConsumer

Configuration

Configuration is handled using a YAML file. The full configuration options are described in the rabbit_indexer repo

This process also requires an environment variable JSON_TAGGER_ROOT. This should be set to the json directory which contains the tagging json.

The required sections for the facet indexer are:

  • rabbit_server
  • indexer
  • logging
  • moles
  • elasticsearch
  • files_index

An example YAML file (secrets noted by ***** ):

---
rabbit_server:
  name: "*****"
  user: "*****"
  password: "*****"
  vhost: "*****"
  source_exchange:
    name: deposit_logs
    type: fanout
  dest_exchange:
    name: fbi_fanout
    type: fanout
  queues:
    - name: elasticsearch_update_queue_opensearch_tags_test
      kwargs:
        auto_delete: false
    - name: elasticsearch_update_queue_opensearch_tags_test
      bind_kwargs:
        routing_key: opensearch.tagger.cci
indexer:
  queue_consumer_class: rabbit_facet_indexer.queue_consumers.FacetScannerQueueConsumer
  path_filter:
    paths:
      - /neodc/esacci
    filter_policy: 2
logging:
  log_level: info
moles:
  moles_obs_map_url: http://api.catalogue.ceda.ac.uk/api/v2/observations.json/?publicationState__in=citable,published,preview,removed&fields=publicationState,result_field,title,uuid
elasticsearch:
  es_api_key: "*****"
files_index:
  name: ceda-fbi
  calculate_md5: false
  scan_level: 2

Running

The indexer can be run using the helper script provided by rabbit_indexer repo. This uses an entry script and parses the config file to run your selected queue_consumer_class:

rabbit_event_indexer --conf <path_to_configuration_file>

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cci_facet_scanner-0.7.3.tar.gz (19.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cci_facet_scanner-0.7.3-py3-none-any.whl (29.4 kB view details)

Uploaded Python 3

File details

Details for the file cci_facet_scanner-0.7.3.tar.gz.

File metadata

  • Download URL: cci_facet_scanner-0.7.3.tar.gz
  • Upload date:
  • Size: 19.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.13.9 Darwin/25.2.0

File hashes

Hashes for cci_facet_scanner-0.7.3.tar.gz
Algorithm Hash digest
SHA256 44db0bb0c6a9083e1284f6248e1439af982a0788e4d78713f7502a939dbd6ae6
MD5 a499f9b773608a465dda10d568bbeac6
BLAKE2b-256 dd3a03f6a08c775f2d4abaa0ad07565e690720dd79bb014e7f97b38ce93d98aa

See more details on using hashes here.

File details

Details for the file cci_facet_scanner-0.7.3-py3-none-any.whl.

File metadata

  • Download URL: cci_facet_scanner-0.7.3-py3-none-any.whl
  • Upload date:
  • Size: 29.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.13.9 Darwin/25.2.0

File hashes

Hashes for cci_facet_scanner-0.7.3-py3-none-any.whl
Algorithm Hash digest
SHA256 aea3037c44c10e75d6ec35dc1df2e18a721dc6eedbacb2ff45e9260f0e385da3
MD5 52d3a13b7418fb015d30e51bb46f144b
BLAKE2b-256 2efbdd22e5b331fc68f098caa874b4ebe6a88011154c6ec5c803d4c5f3ce622d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page