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.jsonare 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 involvingdefinitionsare included in the elasticsearch mapping. find_array_objectwill find all arrays of objects and create a dict representing their locations in the schema (see test casetest_array_simple_nested_casein__tests__/unit/test_find_array_object.py).generate_es_mappinguses this dict to create the elasticsearch mapping (see test casetest_nested_keys_casein__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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
|