{"id":18482080,"url":"https://github.com/ukhomeoffice/elastic-datatables","last_synced_at":"2026-05-16T11:01:38.165Z","repository":{"id":145371817,"uuid":"137866944","full_name":"UKHomeOffice/elastic-datatables","owner":"UKHomeOffice","description":"An elasticsearch datatables demo","archived":false,"fork":false,"pushed_at":"2018-06-24T16:20:49.000Z","size":337,"stargazers_count":0,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-10-28T01:26:11.182Z","etag":null,"topics":["datatables","elasticsearch","search-interface"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/UKHomeOffice.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-06-19T09:05:07.000Z","updated_at":"2018-06-24T16:20:51.000Z","dependencies_parsed_at":null,"dependency_job_id":"f2c812fc-034a-4ab1-a9a7-b8e0870b839b","html_url":"https://github.com/UKHomeOffice/elastic-datatables","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/UKHomeOffice/elastic-datatables","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UKHomeOffice%2Felastic-datatables","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UKHomeOffice%2Felastic-datatables/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UKHomeOffice%2Felastic-datatables/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UKHomeOffice%2Felastic-datatables/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/UKHomeOffice","download_url":"https://codeload.github.com/UKHomeOffice/elastic-datatables/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UKHomeOffice%2Felastic-datatables/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33100319,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-16T04:41:52.686Z","status":"ssl_error","status_checked_at":"2026-05-16T04:41:52.009Z","response_time":115,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["datatables","elasticsearch","search-interface"],"created_at":"2024-11-06T12:26:51.044Z","updated_at":"2026-05-16T11:01:38.121Z","avatar_url":"https://github.com/UKHomeOffice.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# elastic-datatables\n\nAn elasticsearch datatables component that can be forked and customised to provide search functionality on elastic indexes.\n\nSo if there are many indexes storing data in different json formats, fork the code, customise **application.properties** and start analysing the data.\n\n## Components\n\n1. Spring Boot\n2. Bootstrap\n3. DataTables\n4. Custom code \n\n## Flow\n\n1. Search - comes back with records\n2. Details - Record details are displayed in the datatable \n3. Drill down - More details are displayed by clicking individual records\n\n### Search\n\n![search](./search.png)\n\n### Details\n\n![detail](./detail.png)\n\n### Drill down\n\n![more-detail](./more-detail.png)\n\n\n## Building\n\nEnsure that you have access to the repositories hosting the dependencies mentioned in the pom.xml\n\n```shell\nmvn clean package\n```\n\n## Testing\n\n1. Start an elastcsearch docker container\n\n```shell\ndocker run -p 9200:9200 -it --rm --name elasticsearch elasticsearch\n```\n\n2. Post test data to elasticsearch using curl\n\n```shell\ncd testdata\ncurl -H 'Content-Type: application/x-ndjson' -XPOST 'localhost:9200/test/account/_bulk?pretty' --data-binary @accounts.json\n```\n\n3. Run EldApplication \n\n```shell\njava -jar target/elastic-datatables-0.0.1-SNAPSHOT.jar\n```\n\n4. Navigate to http://localhost:8080 to see and interact with the user interface\n\n### Testing a larger dataset\n\n1. Upload shakespeare.json from the Kibana sample dataset\n2. Add the below configuration to application.properties\n```props\n# The Elasticsearch URL\nsearchUrl=http://localhost:9200/shakespeare/_search?pretty\u0026filter_path=hits.hits._id,hits.hits._type,hits.hits._source\n# Mapping json to property\nproperty1=._id\nproperty2=._source.line_id\nproperty3=._source.play_name\nproperty4=._source.speech_number\nproperty5=._source.line_number\nproperty6=._source.speaker\nproperty7=._source.text_entry\nproperty8=\nproperty9=\nproperty10=\nproperty11=\nproperty12=\n# Column Names\ncolumn1=Id\ncolumn2=Line Id\ncolumn3=Play Name\ncolumn4=Speech Number\ncolumn5=Line Number\ncolumn6=Speaker\ncolumn7=Text Entry\ncolumn8=\ncolumn9=\ncolumn10=\ncolumn11=\ncolumn12=\n```\n3. Build and run the application\n4. Navigate to http://localhost:8080 to see and interact with the user interface\n\n## Debugging\n\nRun the EldApplication in debug mode in IDE\n\n\n## Customisation\n\nFork the repo and customise to your needs.\n\n** In most cases you only have to change 1 file (application.properties) to include the search paths and column names **\n\n### Configuration\n1. URL pointing to elastic search cluster index ( application.properties )\n2. Change the application.properties file to use your format \"properties1\"..\n3. Generic Query Json (matchAll.json)\n4. Specific Query Json (matchTerm.json)\n\n### Code\n1. Tailor the index.html to match your needs \n2. Tailor the ElasticResultSetProvider to match your needs\n\n### Other Providers\n\nThe current provider is Elasticsearch, but you can plugin any provider (database, caches ..) that confirms to the ResultSetProvider interface\n\n## TODO's\n\n1. Implement ordering\n2. Add shas to all javascript files\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fukhomeoffice%2Felastic-datatables","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fukhomeoffice%2Felastic-datatables","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fukhomeoffice%2Felastic-datatables/lists"}