The openIMIS Backend opensearch_reports reference module.
Project description
openIMIS Backend opensearch_reports reference module
Adding Environmental Variables to Your Build
To configure environmental variables for your build, include the following:
OPENSEARCH_HOST
- For the non-dockerized instance in a local context, set it to 0.0.0.0:9200. For the dockerized instance, use opensearch:9200.OPENSEARCH_ADMIN
This variable is used for the admin username. (default value: admin)OPENSEARCH_PASSWORD
This variable is used for the admin password. (default value: admin)
How to configure documents in openimis businesss module?
To configure Django ORM models with OpenSearch documents using a noSQL approach, follow these steps:
- Begin by creating a
documents.py
file within your module. - Inside the
documents.py
file, define a Document class that corresponds to your Django ORM model. For example:
from django_opensearch_dsl.registries import registry
from django_opensearch_dsl import Document, fields as opensearch_fields
@registry.register_document
class BeneficiaryDocument(Document):
benefit_plan = opensearch_fields.ObjectField(properties={
'code': opensearch_fields.KeywordField(),
'name': opensearch_fields.KeywordField(),
})
individual = opensearch_fields.ObjectField(properties={
'first_name': opensearch_fields.KeywordField(),
'last_name': opensearch_fields.KeywordField(),
'dob': opensearch_fields.DateField(),
})
status = opensearch_fields.KeywordField(fields={
'status_key': opensearch_fields.KeywordField()}
)
class Index:
name = 'beneficiary' # Name of the Opensearch index
settings = {
'number_of_shards': 1,
'number_of_replicas': 0
}
auto_refresh = True # automatically send updates and new objects to openSearch
class Django:
model = Beneficiary
related_models = [BenefitPlan, Individual]
fields = [
'id',
]
queryset_pagination = 5000
- In the Django class, you can use the
fields
property to include all the fields that are present in your Django ORM model. - If you wish to include related fields (foreign keys), make sure to specify them
in the
related_models
property of your Django class. Add all the foreign key fields that you want to include.
class Django:
model = Beneficiary
related_models = [BenefitPlan, Individual]
fields = [
'id',
]
queryset_pagination = 5000
- If you want to customize the default behavior of field creation, declare the fields you wish to modify
using the appropriate type. For foreign keys, use the
ObjectField
type.
@registry.register_document
class BeneficiaryDocument(Document):
benefit_plan = opensearch_fields.ObjectField(properties={
'code': opensearch_fields.KeywordField(),
'name': opensearch_fields.KeywordField(),
})
individual = opensearch_fields.ObjectField(properties={
'first_name': opensearch_fields.KeywordField(),
'last_name': opensearch_fields.KeywordField(),
'dob': opensearch_fields.DateField(),
})
status = opensearch_fields.KeywordField(fields={
'status_key': opensearch_fields.KeywordField()}
)
- Note that
TextField
types are typically converted to non-aggregable fields in OpenSearch. If you require aggregable fields, use theKeywordField
type. - By default, the
auto_refresh
property in the Index class should enable data to be automatically transferred on every CRUD operation managed by Django ORM. Ensure that this property is properly configured in your project.
How to initialize data after deployment
- If you have initialized the application but still have some data to be transferred, you can effortlessly
achieve this by using the commands available in the business module:
python manage.py add_<model_name>_data_to_opensearch
. This command loads existing data into OpenSearch.
How to Import a Dashboard
- Locate the dashboard definition file in
.ndjson
format within theopenimis-be_<module-name>/import_data
directory. - Log in to your OpenSearch instance.
- Expand the sidebar located on the left side of the page.
- Navigate to
Management
and selectDashboards Management
. - On the left side of the page, click on
Saved Objects
. - At the top-right corner of the table, click on
Import
. - A new side-modal will appear on the right side of the page.
Drag and drop the file from
openimis-be_<module-name>/import_data
into the import dropzone. - This action will import the dashboards along with related charts that should be accessible on the visualization page.
- Verify if the dashboards have been imported properly.
How to Export Dashboards with Related Objects like Visualizations in OpenSearch?
- Log in to your OpenSearch instance.
- Expand the sidebar located on the left side of the page.
- Navigate to
Management
and selectDashboards Management
. - On the left side of the page, click on
Saved Objects
. - At the top-right corner of the table, click on
Export <N> objects
. - Ensure that you have selected dashboards only. Additionally, choose the option to include related objects, and then click export all.
- You should have downloaded file in
.ndjson
format. - Save file in the business model for initialization after deployment in
openimis-be_<module-name>/import_data
. - Rename filename into
opensearch_<model-name>_dashboard.ndjson
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
Built Distribution
File details
Details for the file openimis-be-opensearch_reports-1.0.0.tar.gz
.
File metadata
- Download URL: openimis-be-opensearch_reports-1.0.0.tar.gz
- Upload date:
- Size: 17.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.12.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8cbc0fc07ddcdca1a84f771f49357bf001ae8e92153342d6cb032f33b36fac6d |
|
MD5 | ba29137a87192fd2c7606de9a963298c |
|
BLAKE2b-256 | 6a1d118194b584a5b8cf6e6dcabd7f6400bcc1331be7cf96ba83bb79dc6fc82b |
File details
Details for the file openimis_be_opensearch_reports-1.0.0-py3-none-any.whl
.
File metadata
- Download URL: openimis_be_opensearch_reports-1.0.0-py3-none-any.whl
- Upload date:
- Size: 18.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.12.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c8ac581e0e8e9ac2ef07c534302b39f1ec0d157ad97626a7fd64d8781777c904 |
|
MD5 | b63eecd7165de031b926242c81c9461a |
|
BLAKE2b-256 | 5d854d4f070346b3abcde2a7e76d79d92dd898e30786144bc8fcff3f267ecea4 |