Python utility for generating elasticsearch.json from schema.json for an IDS
Project description
ts-ids-es-json-generator
Introduction
This simple utility generates elasticsearch.json
using schema.json
.
How to Use
To run the generator, simply provide the program with the location of the IDS root directory:
$ pipenv run python -m ids_es_json_generator ~/path/to/ids/folder
elasticsearch.json
may be manually edited after automatic generation (e.g. to update non-searchable fields).
Output
The script saves elasticsearch.json
to the same directory you provided.
Assumptions
The generator operates under the following assumptions:
- It's the IDS designer's responsibility to make sure the schema and
elasticsearch.json
are correct. The generator will not validate the IDS for you.
Restrictions
- JSON pointers are dereferenced to create the mapping, so schemas with circular references or missing references will fail.
Tests
Run the tests using the following command:
$ pipenv run python -m pytest
How it works
Anywhere an array of objects appears in the schema, a nested
field type will be created in the output elasticsearch.json
, including arrays of objects contained anywhere within other arrays of objects.
The steps are:
- The schema is loaded into a dict with all of its JSON pointers dereferenced using
jsonref
, so that nested fields involvingdefinitions
are included in the elasticsearch mapping. find_array_object
will find all arrays of objects and create a dict representing their locations in the schema (see test casetest_array_simple_nested_case
in__tests__/unit/test_find_array_object.py
).generate_es_mapping
uses this dict to create the elasticsearch mapping (see test casetest_nested_keys_case
in__tests__/unit/test_generate_es_mapping.py
).
See the example files and test cases for more example usage.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file ts-ids-es-json-generator-1.0.1.tar.gz
.
File metadata
- Download URL: ts-ids-es-json-generator-1.0.1.tar.gz
- Upload date:
- Size: 8.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.8.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.7.11
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c9ec2fe21a909700e5cd3feebe75f5a6b5045a282baee6e206226295c851fdcc |
|
MD5 | f5fe17edda741fbff3864902b32cc05e |
|
BLAKE2b-256 | d51cc0b68d36010671a96d922040634515e4acdc5da8cb939f1658dea7a1fc6c |
File details
Details for the file ts_ids_es_json_generator-1.0.1-py3-none-any.whl
.
File metadata
- Download URL: ts_ids_es_json_generator-1.0.1-py3-none-any.whl
- Upload date:
- Size: 8.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.8.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.7.11
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | fdd48ebfce1e8a24726db7c9b9385e5ce9fc46a334ccff959d030730c166661f |
|
MD5 | 7d9446b7dffceddd0beae8b94a00927d |
|
BLAKE2b-256 | 45f942a872fd8ef1f93a47f3077658ff71dfd5d22a55d47a6fae523c1fac0e3f |