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
Hashes for ts-ids-es-json-generator-1.0.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | c9ec2fe21a909700e5cd3feebe75f5a6b5045a282baee6e206226295c851fdcc |
|
MD5 | f5fe17edda741fbff3864902b32cc05e |
|
BLAKE2b-256 | d51cc0b68d36010671a96d922040634515e4acdc5da8cb939f1658dea7a1fc6c |
Hashes for ts_ids_es_json_generator-1.0.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fdd48ebfce1e8a24726db7c9b9385e5ce9fc46a334ccff959d030730c166661f |
|
MD5 | 7d9446b7dffceddd0beae8b94a00927d |
|
BLAKE2b-256 | 45f942a872fd8ef1f93a47f3077658ff71dfd5d22a55d47a6fae523c1fac0e3f |