Elasticsearch Plugin To Generate (Save and E-Mail) Excel Reports

ElasticTab – Elasticsearch to Excel Report Web Application

  • Simple Web UI
  • Download Excel Reports
  • Schedule/Edit/Delete Reports
  • E-Mail Reports

Go to https://github.com/raghavendar-ts/ElasticTab-Elasticsearch-to-Excel-Report

Elasticsearch Plugin to Generate Excel Reports

           There are many use cases where in one needs to import data from an external system or database to Elasticsearch and many plugins are build to solve the use case. But there are cases where the users need to view the data in Elasticsearch in a structured or tabular form. There are quite a few plugins that help us export the data to CSV and Excel format, but with no manipulations. So here is a plugin which can be used to export data in Elasticsearch to Excel format and we can perform standard operations on the fields of a document.

Plugin Page: Elasticsearch Report Plugin (https://github.com/raghavendar-ts/Elasticsearch-Report-Plugin)

List of Supported Operation:

  1. getValue – Get the Elasticsearch field value
  2. getDValue – Get custom value based on the Elasticsearch field value
  3. Length – Get the length of Elasticsearch field value
  4. Format Number Length – Format integer to given length
  5. Sub String – Get substring of Elasticsearch field value
  6. Character at index – Get the character at given index of Elasticsearch field value
  7. Calculate – Perform arithmetic operation on Elasticsarch field values
  8. Range – Get custom value based on range condition of Elasticsearch field value
  9. Array indexOf(int value) – Get index of given integer value from an Elasticsearch array
  10. Array indexOf(String value) – Get index of given string value from an Elasticsearch array
  11. Array valueAt(index) – Get the value of given index from an Elasticsearch array

           A simple JSON input to the plugin can generate (save to server or E-Mail) the required Excel file. The plugin page details information on the following.

  • Installing and Removing the Plugin
  • List of Operation Supported
  • Operation Syntax
  • Syntax Description
  • Detailed Example with Sample Data
  • Sample Input Data
  • Sample HTTP Request to the Plugin
  • Sample Output

Related Links: 

Web Application for Elasticsearch :
  1. ElasticTab – Elasticsearch to Excel Report (Web Application)
Elasticsearch Plugin:
  1. Elasticsearch Plugin To Generate (Save and E-Mail) Excel Reports
  1. Execute Multiple Search Query in Elasticsearch
  2. Monitor Elasticsearch Servers with Shell Script - E-Mail Notification
  3. Execute Raw Elasticsearch Query using Transport Client – Java API
  4. Elasticsearch – Apply Nested Filter on Nested (Inner) Aggregation
  5. Execute Multiple Search Query in Elasticsearch
  6. Enable CORS to Send Cross Domain Request to Elasticsearch using AJAX
  7. Elasticsearch Java API – Get Index List
  8. Elasticsearch Java API – Get Alias List
  9. Elasticsearch Java API - Get Type List from given Index
  10. Elasticsearch Java API – Get Field List for a given Index and Type
  11. Elasticsearch Java API – Get Index Type List Mapping
  12. Elasticsearch – Use Script Filter/Conditon in Aggregation/Sub-Aggreagtion
  13. Elasticsearch – Compare/ScriptFilter/Condition on Two Fields using Script Filter – REST Query + Java API
  14. Elasticsearch - Date/Time(String)  Add/Subtract Duration - Days,Months,Years,Hours,Minutes,Seconds
  15. Elasticsearch Geo-Shape Slow Indexing Performance - Solved
  16. Chrome Elasticsearch Sense Not Working – Solved
  1. Logstash – Process Log File Once and Exit/Stop Logstash After Reading Log File Once
  2. Measure Logstash Performance using Metrics Filter – Issue/Error in Syntax (Unknown setting ‘message’ for stdout)
  3. Logstash – Process Same Log File (File Input) from Beginning/Start
  4. Create Custom Filter/Plugin to Emit New Events Manually in Logstash
Logstash and Elasticsearch:
  1. Query Elasticsearch Cluster in Filter Section when using Logstash
  2. Custom Elasticsearch Index Name/Type Name based on Events in Logstash
MongoDB and Elasticsearch:
  1. Import Data from Mongo DB to Elasticsearch using Elasticsearch River

2 thoughts on “Elasticsearch Plugin To Generate (Save and E-Mail) Excel Reports

  1. Abdallah


    how can i solve the below problem ?

    is there any missed configuration, please advice

    Many thanks

    Property files loaded from the path /home/ElasticTab
    SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder”.
    SLF4J: Defaulting to no-operation (NOP) logger implementation
    SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
    Feb 24, 2016 3:58:41 PM com.mchange.v2.log.MLog
    INFO: MLog clients using java 1.4+ standard logging.
    Feb 24, 2016 3:58:41 PM com.mchange.v2.c3p0.C3P0Registry banner
    INFO: Initializing c3p0- [built 15-March-2007 01:32:31; debug? true; trace: 10]
    Feb 24, 2016 3:58:42 PM com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource getPoolManager
    INFO: Initializing c3p0 pool… com.mchange.v2.c3p0.ComboPooledDataSource [ acquireIncrement -> 3, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, dataSourceName -> z8kfsx9f5fixi1ja3q5s|65babc5c, debugUnreturnedConnectionStackTraces -> false, description -> null, driverClass -> org.h2.Driver, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, identityToken -> z8kfsx9f5fixi1ja3q5s|65babc5c, idleConnectionTestPeriod -> 0, initialPoolSize -> 3, jdbcUrl -> jdbc:h2:file:/home/ElasticTab/h2data/elastictab, lastAcquisitionFailureDefaultUser -> null, maxAdministrativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 0, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 2, maxStatements -> 0, maxStatementsPerConnection -> 120, minPoolSize -> 1, numHelperThreads -> 3, numThreadsAwaitingCheckoutDefaultUser -> 0, preferredTestQuery -> null, properties -> {user=******, password=******}, propertyCycle -> 0, testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 0, usesTraditionalReflectiveProxies -> false ]
    Scheduler Client Initialized
    **************************ElasticTab Started**************************
    Feb 24, 2016 3:59:00 PM com.sun.jersey.api.core.PackagesResourceConfig init
    INFO: Scanning for root resource and provider classes in the packages:
    Feb 24, 2016 3:59:00 PM com.sun.jersey.api.core.ScanningResourceConfig logClasses
    INFO: Root resource classes found:
    class com.elastictab.report.ESReportREST
    Feb 24, 2016 3:59:00 PM com.sun.jersey.api.core.ScanningResourceConfig init
    INFO: No provider classes found.
    Feb 24, 2016 3:59:00 PM com.sun.jersey.server.impl.application.WebApplicationImpl _initiate
    INFO: Initiating Jersey application, version ‘Jersey: 1.19 02/11/2015 03:25 AM’
    Feb 24, 2016 3:59:01 PM com.sun.jersey.spi.container.ContainerResponse mapMappableContainerException
    SEVERE: The RuntimeException could not be mapped to a response, re-throwing to the HTTP container
    org.elasticsearch.client.transport.NoNodeAvailableException: None of the configured nodes are available: []
    at org.elasticsearch.client.transport.TransportClientNodesService.ensureNodesAreAvailable(TransportClientNodesService.java:305)
    at org.elasticsearch.client.transport.TransportClientNodesService.execute(TransportClientNodesService.java:200)
    at org.elasticsearch.client.transport.support.InternalTransportIndicesAdminClient.execute(InternalTransportIndicesAdminClient.java:86)
    at org.elasticsearch.client.transport.support.InternalTransportIndicesAdminClient.execute(InternalTransportIndicesAdminClient.java:77)
    at org.elasticsearch.client.support.AbstractIndicesAdminClient.getMappings(AbstractIndicesAdminClient.java:452)
    at com.elastictab.util.Util.getIndexTypeMapping(Util.java:107)
    at com.elastictab.report.ESReportREST.getIndexTypeMapping(ESReportREST.java:304)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
    at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185)
    at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
    at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)
    at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
    at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
    at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
    at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
    at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542)
    at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409)
    at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409)
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558)
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:733)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:806)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:587)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:550)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1128)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1062)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:113)
    at org.eclipse.jetty.server.Server.handle(Server.java:507)
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:284)
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:237)
    at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:240)
    at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:93)
    at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:53)
    at org.eclipse.jetty.util.thread.strategy.ExecuteProduceRun.produceAndRun(ExecuteProduceRun.java:191)
    at org.eclipse.jetty.util.thread.strategy.ExecuteProduceRun.run(ExecuteProduceRun.java:126)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:641)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:559)
    at java.lang.Thread.run(Thread.java:745)

    1. admin@280392

      By the way, the comment which you have mentioned is related to the post ElasticTab – Elasticsearch to Excel Report ( The error is thrown by the application when we try yo connect to an Elasticsearch instance which is down or not available. Elasticsearch properties are configured in elasticsearch.properties file. I guess the hostname or the cluster name in elasticsearch.properties file must be incorrect. cluster name of the Elasticsearch instance can be found in ELASTICSEARCH_HOME/config/elasticsearch.yml with the property name cluster.name

      Error : org.elasticsearch.client.transport.NoNodeAvailableException: None of the configured nodes are available: []

Leave a Reply