Generate Elastic Search Index Mapping Quickly with this helper class see examples on how to use it
Project description
[]
Elastic Search Mapping Generator
what is Elastic Search Mapping Generator ?
- For the past few months, i have been working on elastic search. I notice that it's hard to generate dynamic Query for elastic search it would be great if we had a class that can generate these complex queries. that's the reason I published an open-source library on PyPI that can generate these queries for youÂ
- Link : https://pypi.org/project/elasticsearchquerygenerator/
- Similar approach i wanted to create something that can generate elastic search mapping as well
documentation :
- UML Diagram
Constructor:
* number_of_shards: default shards is 1
* number_of_replicas: default is 0
add_feilds(feild_name=None,type=None,index=True,keywords=True):
- This is main method which does most of work for you
type:
- Type can be text for full text search see link for more details https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-types.html
index : Default value is True
- The index option controls whether field values are indexed. It accepts true or false and defaults to true. Fields that are not indexed are not queryable. https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-index.html
keywords : Default value is True
- Read more https://www.elastic.co/guide/en/elasticsearch/reference/current/keyword.html
- if you dont want keywords set this to False
Installation
pip install elasticsearchmappinggenerator
Usage
Schema
{
"first_name":"Soumil ",
"last_name":"Shah"
}
from elasticsearchmappinggenerator.elasticsearchmappinggenerator import ElasticMappingGenerator
import json
def main():
_helper = ElasticMappingGenerator(number_of_replicas=1,number_of_shards=20)
_helper.add_feilds(feild_name='first_name', type='text', index=True, keywords=False)
_helper.add_feilds(feild_name='last_name', type='text', index=True)
query = _helper.complete_mappings()
print(json.dumps(query, indent=3))
if __name__ == '__main__':
main()
Output :
{
"settings": {
"index": {
"number_of_shards": 20,
"number_of_replicas": 1
}
},
"mappings": {
"properties": {
"name": {
"properties": {
"first_name": {
"type": "text",
"index": true
},
"last_name": {
"type": "text",
"index": true,
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}
}
}
Generating Nested Schema
{
"name":
{
"first_name":"Soumil ",
"last_name":"Shah"
}
}
def main():
_helper = ElasticMappingGenerator(number_of_replicas=1,number_of_shards=20)
_helper.add_feilds(feild_name='name.first_name', type='text', index=True, keywords=False)
_helper.add_feilds(feild_name='name.last_name', type='text', index=True)
query = _helper.complete_mappings()
print(json.dumps(query, indent=3))
if __name__ == '__main__':
main()
output
{
"settings": {
"index": {
"number_of_shards": 20,
"number_of_replicas": 1
}
},
"mappings": {
"properties": {
"name": {
"properties": {
"first_name": {
"type": "text",
"index": true
},
"last_name": {
"type": "text",
"index": true,
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}
}
}
i would be adding more examples and making it better and better
Authors
Soumil Nitin Shah
- Excellent experience of building scalable and high-performance Software Applications combining distinctive skill sets in Internet of Things (IoT), Machine Learning and Full Stack Web Development in Python.
Bachelor in Electronic Engineering | Masters in Electrical Engineering | Master in Computer Engineering |
- Website : https://soumilshah.herokuapp.com
- Github: https://github.com/soumilshah1995
- Linkedin: https://www.linkedin.com/in/shah-soumil/
- Blog: https://soumilshah1995.blogspot.com/
- Youtube : https://www.youtube.com/channel/UC_eOodxvwS_H7x2uLQa-svw?view_as=subscriber
- Facebook Page : https://www.facebook.com/soumilshah1995/
- Email : shahsoumil519@gmail.com
License
This project is licensed under the MIT License - see the LICENSE.md file for details
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 Distributions
No source distribution files available for this release.See tutorial on generating distribution archives.
Built Distribution
File details
Details for the file elasticsearchmappinggenerator-2.0.0-py3-none-any.whl
.
File metadata
- Download URL: elasticsearchmappinggenerator-2.0.0-py3-none-any.whl
- Upload date:
- Size: 16.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/49.6.0 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.8.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 28052574b19e970fe3498f2d7031cf2fe3b54c39450552ed8086420fc34f5e72 |
|
MD5 | 377765e3a600b66eb66733dddf05a759 |
|
BLAKE2b-256 | 1abc107cb16c01cac023b768e8294e965f4c17d00a20f1181181830b92c27117 |