OpenSearch management in openIMIS
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_ADMINThis variable is used for the admin username. (default value: admin)OPENSEARCH_PASSWORDThis 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.pyfile within your module.Inside the
documents.pyfile, 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 = 5000In the Django class, you can use the
fieldsproperty 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_modelsproperty 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 = 5000If 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
ObjectFieldtype.
@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
TextFieldtypes are typically converted to non-aggregable fields in OpenSearch. If you require aggregable fields, use theKeywordFieldtype.By default, the
auto_refreshproperty 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 Import a Dashboard
Locate the dashboard definition file in
.ndjsonformat within theopenimis-be_<module-name>/import_datadirectory.Log in to your OpenSearch instance.
Expand the sidebar located on the left side of the page.
Navigate to
Managementand 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_datainto 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
Managementand 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
.ndjsonformat.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
Developer tools
To upload opensearch configuration
from
/openimis-be_py/openIMIS:run this command:
python manage.py upload_opensearch_dashboards --host-domain <host-domain> --imis-password <password>. This command will This command will upload dashboards config including charts, visualizations, indexes if the opensearch is available in package.<password>- password necessary to log as admin user to obtain token to connect with API<host-domain>is a hostname with http or https protocol for examplehttps://release.openimis.org
Updating Dashboard Path in OpenSearch
Steps:
Navigate to Dashboards -> Configure Dashboards.
In the displayed table, find the list of available dashboards.
Click on the 'Edit' option for the specific dashboard you wish to modify.
Edit Path:
Go to the OpenSearch dashboard you want to link, e.g., Example Dashboard Link.
Click on the 'Share' button at the top-right menu and select the 'short' link option.
In the small modal, choose the 'short' link option and click 'Copy Link'.
Paste the link obtained from the 'Share' button into a text editor or directly into the 'Edit Link' modal.
From the link obtained in the previous step, e.g. 'https://coremis.s1.openimis.org/opensearch/goto/6084fcd3b4d8c75cabd17a03a62d6bcb?security_tenant=private', extract the path from 'goto', for example, 'goto/6084fcd3b4d8c75cabd17a03a62d6bcb?security_tenant=private'.
Edit the path in the modal form and click 'Save'.
The table is now updated. Navigate to, for example, Beneficiary Reports, to view the new dashboard in the respective report page.
Disable synchronization option to OpenSearch on UI
Go Into ‘Dashboards' → ‘Manage Dashboard’ or '<openimis-domain>/front/dashboardConfiguration’.
Click 'Edit Dashboard' in the selected row (row is simply a dashboard entity)
In the modal, click ‘switch on/switch off' and save (’Synchronization Disabled').
You should have synchronization either enabled/disabled
Did you encounter a problem or do you have a suggestion?
Please contact our Service Desk
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. https://creativecommons.org/licenses/by-sa/4.0/