Giter Site home page Giter Site logo

ngageoint / elasticgeo Goto Github PK

View Code? Open in Web Editor NEW
168.0 168.0 84.0 1.36 MB

ElasticGeo provides a GeoTools data store that allows geospatial features from an Elasticsearch index to be published via OGC services using GeoServer.

License: GNU General Public License v3.0

Java 99.27% HTML 0.40% Python 0.33%
elasticsearch geoserver geotools ogc-services

elasticgeo's People

Contributors

chrisbennight avatar ckras34 avatar cuttlefish avatar dclemenzi avatar jeremyjones2 avatar joelstewart avatar johndeereguy avatar kaphilmore avatar nreese avatar orofarne avatar sjudeng avatar tbarsballe avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

elasticgeo's Issues

OpenStreetMap support

I'm not sure this is the right place to ask this but I'm going to anyway :-)
I'm looking into a solution to generate a map based on OpenStreetMap data pushed into an elastic search engine presented by GeoServer.
I was wondering if you guys ever tried it? Are you using a third party tool to convert the OSM data into elastic search and what would be the configuration on the GeoServer to support such import.
I don't mind helping writing some code and sending a pull request if needed.

POI is shown, but Heatmap is not in Geoserver 2.13

Please help me...

The heatmap with GeoHashGrid is not shown without any errors. I guess that the gridStrategy of GeoHashGrid style is not working because it is working with point and native heatmap in Geoserver.

Java 1.8 (Oracle)
Elasticsearch 6.2.4
Geoserver 2.13.1 in Tomcat7

I added elasticgeo*.jar to the library folder of Geoserver. Do I need to add additional jars for solving this problem? Or Indexing again with some options?

------------------------------ GeoHashGrid Style ---------------------------


GeoHashGrid

<Title>GeoHashGrid</Title>
GeoHashGrid aggregation


<ogc:Function name="vec:GeoHashGrid">
<ogc:Function name="parameter">
ogc:Literaldata</ogc:Literal>
</ogc:Function>
<ogc:Function name="parameter">
ogc:LiteralgridStrategy</ogc:Literal>
ogc:LiteralBasic</ogc:Literal>
</ogc:Function>
<ogc:Function name="parameter">
ogc:LiteralpixelsPerCell</ogc:Literal>
ogc:Literal1</ogc:Literal>
</ogc:Function>
<ogc:Function name="parameter">
ogc:LiteraloutputBBOX</ogc:Literal>
<ogc:Function name="env">
ogc:Literalwms_bbox</ogc:Literal>
</ogc:Function>
</ogc:Function>
<ogc:Function name="parameter">
ogc:LiteraloutputWidth</ogc:Literal>
<ogc:Function name="env">
ogc:Literalwms_width</ogc:Literal>
</ogc:Function>
</ogc:Function>
<ogc:Function name="parameter">
ogc:LiteraloutputHeight</ogc:Literal>
<ogc:Function name="env">
ogc:Literalwms_height</ogc:Literal>
</ogc:Function>
</ogc:Function>
</ogc:Function>





ogc:PropertyNamegeom</ogc:PropertyName>
0.6















----- end -----

Refresh a layers attributes if mapping change in Elasticsearch.

Currently, using ElasticGeo, it seems that whenever we create a mapping change on the index the store is referencing, we have to delete the layer and recreate it for those new fields in Elasticsearch to be recognized. It'd be nice to have even a refresh button on a layer to trigger an update to the attributes by reaching out to the mapping API.

Elasticgeo Geoserver Time and Elevation Enabling Support

Does Geoserver support Time enabling for Elasticsearch stores when using the elasticgeo plugin? The Geoserver version is 2.7.2.

What is the proper setup when Enabling Time and Elevation and which date format should be used. Please also provide example URL calls if possible. If you are able to get it working please provide the expected outcome as well as screen captures of the setup.

Issue:
There seems to be an issue where a layer is setup without Time or Elevation enabled, then the data appears correctly when viewing. However, once the Time is enabled, I receive an error message that says Rendering process failed. I've modified the ElasticSearch data Type for DATE to multiple different date and time formats and have not been successful in having the Time Enable to work.

Please see below for Time enable Example and error message:

github1

  Rendering process failed

java.io.IOException: Error executing query search
Error executing query search

*just to note ive replaced the actual IP and PORT with placeholder IP:PORT

Thank you in advance for the help.

Geo-point value precision

It seems that if there are geo-point values present in the Elasticsearch index that are integers (e.g. no decimals), then the feature won't show up in Geoserver. I don't know if this is a known issue, or if there's some configuration setting that we missed, but we had to manually add .0 in order to see the data:

{
  "location": {
    "lat": 40.0,
    "lon": -95.0
  }
}

aggregation - URL encoded viewparams throws org.geoserver.platform.ServiceException

I am attempting to use leaflet to experiment with a WMS layer generated from elasticsearch with geogrid aggregation.

I am using elasticsearch 5.1.2. I have an index with a geo_point field called location. I created a new layer in geoserver. I created a new style, geohashgrid, copied from gs-web-elasticsearch/doc/index.rst (replacing <ogc:PropertyName>geo</ogc:PropertyName></Geometry> with <ogc:PropertyName>location</ogc:PropertyName></Geometry>). All tile requests result in the exception org.geoserver.platform.ServiceException.

html

<html>
  <head>
    <link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/leaflet.css" />
    <script src="https://unpkg.com/[email protected]/dist/leaflet.js"></script>
  </head>
  <body>
    <div id="mapid" style="height: 500px; width: 1000px;"></div>
    <script type="text/javascript">
      var mymap = L.map('mapid').setView([39.7, -104.9], 9);
      L.tileLayer(
        'http://a.tile.openstreetmap.org/{z}/{x}/{y}.png', 
        {
          attribution: 'Map data © <a href="http://openstreetmap.org">OpenStreetMap</a> contributors'
        }).addTo(mymap);

      var wmsOptions = {
        format: 'image/png',
        layers: 'denver:report',
        transparent: true,
        version: '1.1.1',
        styles: 'geohashgrid',
        viewparams: 'a:{"agg": {"geohash_grid": {"field": "location"\, "precision": 3}}}'
      };
      L.tileLayer.wms(
        'http://localhost:8080/geoserver/denver/wms', 
        wmsOptions).addTo(mymap);
    </script>
  </body>
</html>

Generated WMS url

http://localhost:8080/geoserver/denver/wms?SERVICE=WMS&REQUEST=GetMap&VERSION=1.1.1&LAYERS=denver%3Areport&STYLES=geohashgrid&FORMAT=image%2Fpng&TRANSPARENT=true&HEIGHT=256&WIDTH=256&VIEWPARAMS=a%3A%7B%22agg%22%3A%20%7B%22geohash_grid%22%3A%20%7B%22field%22%3A%20%22location%22%2C%20%22precision%22%3A%203%7D%7D%7D&SRS=EPSG%3A3857&BBOX=-11662456.027639052,4774562.53480525,-11623320.26915704,4813698.293287256

Server exception

org.geoserver.platform.ServiceException: 1 layers requested, but found 2 view params specified. 
	at org.geoserver.wms.map.GetMapKvpRequestReader.read(GetMapKvpRequestReader.java:487)
	at org.geoserver.wms.map.GetMapKvpRequestReader.read(GetMapKvpRequestReader.java:85)
	at org.geoserver.ows.Dispatcher.parseRequestKVP(Dispatcher.java:1498)
	at org.geoserver.ows.Dispatcher.dispatch(Dispatcher.java:673)
	at org.geoserver.ows.Dispatcher.handleRequestInternal(Dispatcher.java:258)
	at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:147)
	at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:50)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:968)
	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:859)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:844)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
	at StaticHeaders.doFilter(StaticHeaders.java:22)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
	at org.geoserver.filters.ThreadLocalsCleanupFilter.doFilter(ThreadLocalsCleanupFilter.java:28)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
	at org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegatingFilter.java:75)
	at org.geoserver.wms.animate.AnimatorFilter.doFilter(AnimatorFilter.java:71)
	at org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegatingFilter.java:71)
	at org.geoserver.filters.SpringDelegatingFilter.doFilter(SpringDelegatingFilter.java:46)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
	at org.geoserver.platform.AdvancedDispatchFilter.doFilter(AdvancedDispatchFilter.java:50)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)

I can manually replace the URL encoded viewparams attribute and then the request returns an empty tile.

http://localhost:8080/geoserver/denver/wms?SERVICE=WMS&REQUEST=GetMap&VERSION=1.1.1&LAYERS=denver%3Areport&STYLES=geohashgrid&FORMAT=image%2Fpng&TRANSPARENT=true&HEIGHT=256&WIDTH=256&VIEWPARAMS=a:{"agg": {"geohash_grid": {"field": "location"\, "precision": 3}}}&SRS=EPSG%3A3857&BBOX=-11818999.061567092,4774562.53480525,-11740727.544603072,4852834.051769271

How can leaflet be used to view WMS tiles generated via geogrid aggregation?

Geometry null after publishing the ES layer in geoserver

After loading a shapefile with the ogr2ogr driver:

ogr2ogr -progress -lco INDEX_NAME=elasticday -lco MAPPING_NAME=mfermate -lco FID=ID -lco GEOMETRY_NAME=geometry -lco GEOM_MAPPING_TYPE=GEO_POINT -s_srs EPSG:32632 -t_srs EPSG:4326 -f "ElasticSearch" http://localhost:9200 MM_FERM.shp

I see it properly created in the index but when I try to publish into GS the BBOX is not recognized and a WFS call simply shows all the geometry null

OLD INDEX

{
type: "FeatureCollection",
totalFeatures: 62,
features: [
{
type: "Feature",
id: "FeatureCollection.AU9A-d1J6YOE6h8Y-HMf",
geometry: {
type: "Point",
coordinates: [
7.452106982623389,
45.75726559555538
]
},
geometry_name: "geometry.coordinates",
properties: {
_id: "AU9A-d1J6YOE6h8Y-HMf",
_index: "nivozone_clean",
_type: "FeatureCollection",
_score: 1,
_relative_score: 1,
_timestamp: null,
properties.id: 3,
properties.Area: 941.9758,
properties.Nome: "Valle d'Aosta Centrale",
properties.Nivozone: "IT9",
type: "Feature",
geometry.type: "POINT"
}
},

NEW INDEX

{
type: "FeatureCollection",
totalFeatures: 62,
features: [
{
type: "Feature",
id: "Nivozone.AU89hPGz6YOE6h8Y-HLd",
geometry: null,
geometry_name: "geometry.coordinates",
properties: {
_id: "AU89hPGz6YOE6h8Y-HLd",
_index: "nivozone",
_type: "FeatureCollection",
_score: 1,
_relative_score: 1,
_timestamp: null,
properties.id: 4,
properties.Meteonivoz: "IT48R1",
properties.Area_MNZ: 631.0047,
properties.Nome: "Alpi Pennine",
type: "Feature",
geometry.type: "POINT",
geometry.coordinates: null
}
},

I've attempted with different environment and I've got the same result:

OSX 10.9.5
JVM 1.7
OpenGeo Suite 4.8 (GeoServer 2.8-SNAPSHOT)
ELASTICGEO 2.8-SNAPSHOT (successfully compiled from source)
ES 2.2

UBUNTU 14.04
JVM 1.7
TOMCAT 7
GEOSERVER 2.8.3
ELASTICGEO Precompiled 2.8.3
ES 2.2

Incidentally I've in the same ES cluster an index created with the 1.7 version and the plugin is able to create layers from that with the expected geometries.

WFS Support

Hello Again,

This is a helpful plugin, and I've got it work fine with WMS. However, I'm curious: Was this plugin/extension meant to also work WFS? As a test, I loaded a dataset in three different ways: in a postgis instance, in elasticsearch, and a shapefile uploaded to the GeoServer... all the same data, served via an instance of GeoServer 2.12.0 running in Docker. I then issued six different queries, all with the same bounding box:

  1. WMS to the postgis layer
  2. WFS to the postgis layer
  3. WMS to the shapefile layer
  4. WFS to the shapefile layer
  5. WMS to the elasticsearch layer
  6. WFS to the elasticsearch layer

The first five queries return without error and all return the same feature count. The 6th query fails with the following error.

geoserver_1  | 21 Dec 16:38:27 ERROR [data.elasticsearch] - method [POST], host [http://es:9200], URI [/mvum/FeatureCollection/_search], status line [HTTP/1.1 500 Internal Server Error]
...
geoserver_1  | Caused by: java.io.IOException: Error executing query search
geoserver_1  | 	at mil.nga.giat.data.elasticsearch.ElasticFeatureSource.getReaderInternal(ElasticFeatureSource.java:132)
geoserver_1  | 	at org.geotools.data.store.ContentFeatureSource.getReader(ContentFeatureSource.java:647)
geoserver_1  | 	at org.geotools.data.store.ContentFeatureCollection.features(ContentFeatureCollection.java:173)
geoserver_1  | 	... 114 more
geoserver_1  | Caused by: org.elasticsearch.client.ResponseException: method [POST], host [http://es:9200], URI [/mvum/FeatureCollection/_search], status line [HTTP/1.1 500 Internal Server Error]
geoserver_1  | {"error":{"root_cause":[{"type":"query_phase_execution_exception","reason":"Result window is too large, from + size must be less than or equal to: [10000] but was [1000000]. See the scroll api for a more efficient way to request large data sets. This limit can be set by changing the [index.max_result_window] index level setting."}],"type":"search_phase_execution_exception","reason":"all shards failed","phase":"query","grouped":true,"failed_shards":[{"shard":0,"index":"mvum","node":"ve0jbu0DTiK1Iv256fIY-A","reason":{"type":"query_phase_execution_exception","reason":"Result window is too large, from + size must be less than or equal to: [10000] but was [1000000]. See the scroll api for a more efficient way to request large data sets. This limit can be set by changing the [index.max_result_window] index level setting."}}]},"status":500}

I tried shrinking the bounding box, such that only two features are returned... but the same error occurs. Do you have any suggestions?

Aggregations - assistance needed

Hi all - great project. I have WMS and WFS working well on individual features. I'm now trying to get grid aggregations going w/ both WMS/WFS.

This query works for me in elastic:
curl -XPOST 'localhost:9200/mydata/_search?size=0' -H 'Content-Type: application/json' -d'
{
"aggregations" : {
"large-grid" : {
"geohash_grid" : {
"field" : "location",
"precision" : 4
}
}
}
}
'

But I am unclear how to access the same data as a WFS. The project example lists a sample WFS aggregation:

http://localhost:8080/geoserver/test/ows?service=WFS&version=1.0.0&request=GetFeature
&typeName=test:active&bbox=0.0,0.0,24.0,44.0
&viewparams=a:{"agg": {"geohash_grid": {"field": "geo", "precision": 3}}}

But when I try:
http://localhost:8080/geoserver/cite/ows?service=WFS&version=1.0.0&request=GetFeature&viewparams=a:{"aggregations":{"large-grid":{"geohash_grid":{"field":"location"\,"precision":4}}}}

I don't get anything back. Any advice on how to structure the WFS URL is appreciated!

Similar for WMS:

The example is:
http://localhost:8080/geoserver/test/wms?service=WMS&version=1.1.0&request=GetMap
&layers=test:active&styles=geohashgrid&bbox=0.0,0.0,24.0,44.0&srs=EPSG:4326
&width=418&height=768&format=application/openlayers
&viewparams=a:{"agg": {"geohash_grid": {"field": "geo", "precision": 3}}}

And this elastic query works for me:
curl -XPOST 'localhost:9200/mydata/_search?size=0' -H 'Content-Type: application/json' -d'
{
"aggregations" : {
"zoomed-in" : {
"filter" : {
"geo_bounding_box" : {
"location" : {
"top_left" : "41, -75",
"bottom_right" : "40, -74"
}
}
},
"aggregations":{
"zoom1":{
"geohash_grid" : {
"field": "location",
"precision": 8
}
}
}
}
}
}
'

I tried:
http://localhost:8080/geoserver/cite/ows?service=WMS&version=1.1.0&request=GetMap &layers=cite:mydata&styles=geohashgrid&viewparams=a:{"aggregations":{"large-grid":{"geohash_grid":{"field":"location","precision":4}}}}

and I tried:
http://localhost:8080/geoserver/cite/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=cite:mydata&bbox=41,-75,40,-74&viewparams=a:{"aggregations":{"zoomed-in":{"filter":{"geo_bounding_box":{"location":{"top_left":"41,-75","bottom_right":"40,-74"}}},"aggregations":{"zoom1":{"geohash_grid":{"field":"location","precision":8}}}}}}

Any help is much appreciated.

I'm running elasticsearch 6.2.2 and geoserver 2.12.2

Error previewing an elasticsearch layer on openlayers

looks like there is some kind of error creating a point layer from elasticsearch

2017-05-30 19:17:41,561 WARN [wms.map] - Failed to determine CRS axis order, assuming is EN
org.opengis.referencing.NoSuchAuthorityCodeException: No code "CRS:GC,DEF,CRS,EPSG,4326" from authority "Web Map Service CRS" found for object of type "CoordinateReferenceSystem".
...
Caused by: java.lang.NumberFormatException: For input string: "GC,DEF,CRS,EPSG,4326"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.parseInt(Integer.java:615)

geoserver 2.11.1
tomcat apache-tomcat-8.5.14
java 1.8.0_111
elasticsearch 5.4.0
elasticgeo 2.11.0

Uncompatible with ElasticSearch 2.0

Attempting to connect from Geoserver 2.8.3 to ElasticSearch 2.0 and receiving the following error:
org.elasticsearch.client.transport.NoNodeAvailableException: None of the configured nodes are available: []

Empty WMS tiles getting returned for areas with lots of records

I have successfully connected geoserver 2.9.1 with elasticgeo 2.9.1-RC1 to elasticsearch 2.2. Using leaflet, I can view WMS tiles containing data from elasticsearch.

When a tile covers an area with lots of records (couple thousand) in elasticsearch, geoserver returns an empty tile. The tiles around the dense areas load find and contain the expected features.

Are empty tiles expected behavior? What are the upper limits of documents that can be combined to create a tile? Are there any configuration parameters that need to be tuned?

cant connect to store

when adding a new store in geoserver i get the following error:
geoserver: 2.10
es 2.2.2
win 10


org.apache.wicket.WicketRuntimeException: Method onRequest of interface org.apache.wicket.behavior.IBehaviorListener targeted at org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink$1@fb005e on component [AjaxSubmitLink [Component id = save]] threw an exception
at org.apache.wicket.RequestListenerInterface.internalInvoke(RequestListenerInterface.java:268)
at org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:241)
at org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.invokeListener(ListenerInterfaceRequestHandler.java:248)
at org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.respond(ListenerInterfaceRequestHandler.java:234)
at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:865)
at org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64)
at org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:265)
at org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:222)
at org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:293)
at org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:261)
at org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:203)
at org.apache.wicket.protocol.http.WicketServlet.doPost(WicketServlet.java:159)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.springframework.web.servlet.mvc.ServletWrappingController.handleRequestInternal(ServletWrappingController.java:158)
at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:147)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:50)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:968)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:870)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:844)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:808)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)
at org.geoserver.filters.ThreadLocalsCleanupFilter.doFilter(ThreadLocalsCleanupFilter.java:28)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
at org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegatingFilter.java:75)
at org.geoserver.wms.animate.AnimatorFilter.doFilter(AnimatorFilter.java:71)
at org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegatingFilter.java:71)
at org.geoserver.filters.SpringDelegatingFilter.doFilter(SpringDelegatingFilter.java:46)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
at org.geoserver.platform.AdvancedDispatchFilter.doFilter(AdvancedDispatchFilter.java:50)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:316)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:69)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:126)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:90)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:73)
at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:92)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:69)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:114)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:73)
at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:92)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.geoserver.security.filter.GeoServerAnonymousAuthenticationFilter.doFilter(GeoServerAnonymousAuthenticationFilter.java:54)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:69)
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:205)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:73)
at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:92)
at org.geoserver.security.filter.GeoServerUserNamePasswordAuthenticationFilter.doFilter(GeoServerUserNamePasswordAuthenticationFilter.java:116)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:69)
at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:157)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:73)
at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:92)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:69)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:91)
at org.geoserver.security.filter.GeoServerSecurityContextPersistenceFilter$1.doFilter(GeoServerSecurityContextPersistenceFilter.java:53)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:73)
at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:92)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:213)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:176)
at org.geoserver.security.GeoServerSecurityFilterChainProxy.doFilter(GeoServerSecurityFilterChainProxy.java:152)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
at org.geoserver.filters.LoggingFilter.doFilter(LoggingFilter.java:87)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
at org.geoserver.filters.GZIPFilter.doFilter(GZIPFilter.java:42)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
at org.geoserver.filters.SessionDebugFilter.doFilter(SessionDebugFilter.java:48)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
at org.geoserver.filters.FlushSafeFilter.doFilter(FlushSafeFilter.java:44)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:121)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
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:1061)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215)
at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
at org.eclipse.jetty.server.Server.handle(Server.java:499)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.wicket.RequestListenerInterface.internalInvoke(RequestListenerInterface.java:258)
... 101 more
Caused by: java.lang.NoSuchMethodError: com.google.common.util.concurrent.MoreExecutors.directExecutor()Ljava/util/concurrent/Executor;
at org.elasticsearch.threadpool.ThreadPool.(ThreadPool.java:190)
at org.elasticsearch.client.transport.TransportClient$Builder.build(TransportClient.java:133)
at mil.nga.giat.data.elasticsearch.ElasticCompat2.createClient(ElasticCompat2.java:38)
at mil.nga.giat.data.elasticsearch.ElasticDataStore.(ElasticDataStore.java:135)
at mil.nga.giat.data.elasticsearch.ElasticDataStoreFactory.createDataStore(ElasticDataStoreFactory.java:120)
at mil.nga.giat.data.elasticsearch.ElasticDataStoreFactory.createDataStore(ElasticDataStoreFactory.java:18)
at org.vfny.geoserver.util.DataStoreUtils.getDataAccess(DataStoreUtils.java:90)
at org.geoserver.catalog.ResourcePool.getDataStore(ResourcePool.java:636)
at org.geoserver.catalog.impl.DataStoreInfoImpl.getDataStore(DataStoreInfoImpl.java:38)
at org.geoserver.web.data.store.DataAccessNewPage.onSaveDataStore(DataAccessNewPage.java:95)
at org.geoserver.web.data.store.AbstractDataAccessPage$1.onSubmit(AbstractDataAccessPage.java:165)
at org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink$1.onSubmit(AjaxSubmitLink.java:110)
at org.apache.wicket.ajax.form.AjaxFormSubmitBehavior$AjaxFormSubmitter.onSubmit(AjaxFormSubmitBehavior.java:215)
at org.apache.wicket.markup.html.form.Form.delegateSubmit(Form.java:1307)
at org.apache.wicket.markup.html.form.Form.process(Form.java:974)
at org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:795)
at org.apache.wicket.ajax.form.AjaxFormSubmitBehavior.onEvent(AjaxFormSubmitBehavior.java:171)
at org.apache.wicket.ajax.AjaxEventBehavior.respond(AjaxEventBehavior.java:155)
at org.apache.wicket.ajax.AbstractDefaultAjaxBehavior.onRequest(AbstractDefaultAjaxBehavior.java:588)
... 106 more

Adding new source in geoserver leads to java error: Could not initialize class org.elasticsearch.threadpool.ThreadPool

Working on local machine (Windows 10) with:
Geoserver 2.8.2 (I know you only suppport up to 2.8.1, is this the problem?)
Elasticsearch 2.2.2 (but 2.3.1 had same issue)
Java 1.8.0_73
Elastic geo release elasticgeo2.8.1-gs2.8.1-es2.2.0.zip

I do not have the possibility to downgrade to Geoserver 2.8.1 on my production server.

I enter the following when setting up the data source in geoserver:
knipsel
When clicking the save button, I get the mentioned error.

Here is the full stacktrace from my Tomcat logs:

19-May-2016 13:49:03.687 SEVERE [http-apr-8080-exec-9] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [dispatcher] in context with path [/geoserver] threw exception [Handler processing failed; nested exception is java.lang.NoClassDefFoundError: Could not initialize class org.elasticsearch.threadpool.ThreadPool] with root cause
java.lang.NoClassDefFoundError: Could not initialize class org.elasticsearch.threadpool.ThreadPool
at org.elasticsearch.client.transport.TransportClient$Builder.build(TransportClient.java:133)
at mil.nga.giat.data.elasticsearch.ElasticCompat2.createClient(ElasticCompat2.java:38)
at mil.nga.giat.data.elasticsearch.ElasticDataStore.(ElasticDataStore.java:135)
at mil.nga.giat.data.elasticsearch.ElasticDataStoreFactory.createDataStore(ElasticDataStoreFactory.java:119)
at mil.nga.giat.data.elasticsearch.ElasticDataStoreFactory.createDataStore(ElasticDataStoreFactory.java:18)
at org.vfny.geoserver.util.DataStoreUtils.getDataAccess(DataStoreUtils.java:89)
at org.geoserver.catalog.ResourcePool.getDataStore(ResourcePool.java:590)
at org.geoserver.catalog.impl.DataStoreInfoImpl.getDataStore(DataStoreInfoImpl.java:38)
at org.geoserver.web.data.store.DataAccessNewPage.onSaveDataStore(DataAccessNewPage.java:93)
at org.geoserver.web.data.store.AbstractDataAccessPage$1.onSubmit(AbstractDataAccessPage.java:163)
at org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink$1.onSubmit(AjaxSubmitLink.java:68)
at org.apache.wicket.ajax.form.AjaxFormSubmitBehavior.onEvent(AjaxFormSubmitBehavior.java:143)
at org.apache.wicket.ajax.AjaxEventBehavior.respond(AjaxEventBehavior.java:177)
at org.apache.wicket.ajax.AbstractDefaultAjaxBehavior.onRequest(AbstractDefaultAjaxBehavior.java:300)
at org.apache.wicket.request.target.component.listener.BehaviorRequestTarget.processEvents(BehaviorRequestTarget.java:119)
at org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:92)
at org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1250)
at org.apache.wicket.RequestCycle.step(RequestCycle.java:1329)
at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1436)
at org.apache.wicket.RequestCycle.request(RequestCycle.java:545)
at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:484)
at org.apache.wicket.protocol.http.WicketServlet.doPost(WicketServlet.java:160)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.springframework.web.servlet.mvc.ServletWrappingController.handleRequestInternal(ServletWrappingController.java:159)
at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.catalina.filters.CorsFilter.handleNonCORS(CorsFilter.java:436)
at org.apache.catalina.filters.CorsFilter.doFilter(CorsFilter.java:177)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.geoserver.filters.ThreadLocalsCleanupFilter.doFilter(ThreadLocalsCleanupFilter.java:28)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegatingFilter.java:75)
at org.geoserver.wms.animate.AnimatorFilter.doFilter(AnimatorFilter.java:71)
at org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegatingFilter.java:71)
at org.geoserver.filters.SpringDelegatingFilter.doFilter(SpringDelegatingFilter.java:46)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.geoserver.platform.AdvancedDispatchFilter.doFilter(AdvancedDispatchFilter.java:50)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:311)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:69)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:116)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:73)
at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:92)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:69)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:73)
at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:92)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.geoserver.security.filter.GeoServerAnonymousAuthenticationFilter.doFilter(GeoServerAnonymousAuthenticationFilter.java:54)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:69)
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:182)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:73)
at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:92)
at org.geoserver.security.filter.GeoServerUserNamePasswordAuthenticationFilter.doFilter(GeoServerUserNamePasswordAuthenticationFilter.java:116)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:69)
at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:146)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:73)
at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:92)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:69)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
at org.geoserver.security.filter.GeoServerSecurityContextPersistenceFilter$1.doFilter(GeoServerSecurityContextPersistenceFilter.java:53)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:73)
at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:92)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:173)
at org.geoserver.security.GeoServerSecurityFilterChainProxy.doFilter(GeoServerSecurityFilterChainProxy.java:135)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.geoserver.filters.LoggingFilter.doFilter(LoggingFilter.java:87)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.geoserver.filters.GZIPFilter.doFilter(GZIPFilter.java:42)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.geoserver.filters.SessionDebugFilter.doFilter(SessionDebugFilter.java:48)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.geoserver.filters.FlushSafeFilter.doFilter(FlushSafeFilter.java:44)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2500)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2489)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)

No Support for Wildcarded Indexes

A great feature to be added would be the ability to wildcard indexes in elastic search. For example, if you're using time-based indexes for twitter data, and you've got twitter-2017.10, twitter-2017.11, twitter-2017.12, and twitter-2017.01, all of which have the same fields, it would be great to add a single Vector Data Source that is twitter-* (like Kibana). Elastic Search should handle that query, it would just need to be passed through and verified. Obviously, the hard part is ensuring that the fields match, and managing fields being added and removed from index to index. But...kibana can do it, and it would be fantastic if elasticgeo could do it too.

Installation into GeoServer Failed

Hello, I pulled down the code and built everything no problem via maven install...
Then I was not sure which jars to put in the lib dir of geoserver, so I put this jar in there
gs-web-elasticsearch-2.7-SNAPSHOT.jar. The docs say to put "the plugin" in the lib dir but I'm not sure what "the plugin" is.
Before I post all the exceptions in the Goeserver logs, I thought I would first ask if I am putting the right jars in the right place.

here's my geoserver specs
Version
2.7.0
Git Revision
b7cdbf9bbef0c5f88a3d30e132146ac9fa368b4b
Build Date
20-Mar-2015 19:44
GeoTools Version
13.0 (rev 3e400364d95c06a3e449c34dbc3c587a12bbdfb6)
GeoWebCache Version
1.7.0 (rev 1.7.x/c87a6d54381fd571424095702a43a6fd403e5148)

Index mapping with field not indexed results in java.lang.ClassCastException: java.lang.Boolean cannot be cast to java.lang.String

Steps to reproduce

  • Create and post a mapping for an Elasticsearch index. The mapping needs to include a field that is not indexed.
    "field_name" : {
        "index" : false
    }
  • In geoserver, create a store for the index. Use the REST interface (port 9200). After the store is created, try to publish the layer.

Geoserver fails with the following error

Caused by: java.lang.ClassCastException: java.lang.Boolean cannot be cast to java.lang.String
	at mil.nga.giat.data.elasticsearch.ElasticCompat5.isAnalyzed(ElasticCompat5.java:88)
	at mil.nga.giat.data.elasticsearch.ElasticDataStore.add(ElasticDataStore.java:340)
	at mil.nga.giat.data.elasticsearch.ElasticDataStore.walk(ElasticDataStore.java:313)
	at mil.nga.giat.data.elasticsearch.ElasticDataStore.walk(ElasticDataStore.java:310)
	at mil.nga.giat.data.elasticsearch.ElasticDataStore.getElasticAttributes(ElasticDataStore.java:150)
	at mil.nga.giat.data.elasticsearch.ElasticFeatureSource.<init>(ElasticFeatureSource.java:48)
	at mil.nga.giat.data.elasticsearch.ElasticDataStore.createFeatureSource(ElasticDataStore.java:111)
	at org.geotools.data.store.ContentDataStore.getFeatureSource(ContentDataStore.java:395)
	at mil.nga.giat.data.elasticsearch.ElasticDataStore.getFeatureSource(ElasticDataStore.java:122)
	at org.geotools.data.store.ContentDataStore.getFeatureSource(ContentDataStore.java:686)
	at org.geotools.data.store.ContentDataStore.getFeatureSource(ContentDataStore.java:103)
	at org.geoserver.catalog.CatalogBuilder.buildFeatureType(CatalogBuilder.java:333)
	at org.geoserver.web.data.layer.NewLayerPage.buildLayerInfo(NewLayerPage.java:359)
	... 121 more

I looks like Elasticsearch 5.x changed the value of index from a String (that used to be analyzed, not_analyzed, and no) to just a Boolean.

Conflicting getter definitions for property "hits"

We are using a newer version of com.fasterxml.jackson (2.9.1) which when running inside of a unit test is overriding the version used by gt-elasticsearch causing this issue:

Caused by: java.lang.IllegalArgumentException: Conflicting getter definitions for property "hits": mil.nga.giat.data.elasticsearch.ElasticResponse#getHits(0 params) vs mil.nga.giat.data.elasticsearch.ElasticResponse#getResults(0 params)
	at com.fasterxml.jackson.databind.introspect.POJOPropertyBuilder.getGetter(POJOPropertyBuilder.java:432)
	at com.fasterxml.jackson.databind.introspect.BeanPropertyDefinition.getAccessor(BeanPropertyDefinition.java:188)
	at com.fasterxml.jackson.databind.introspect.POJOPropertyBuilder._getSetterInfo(POJOPropertyBuilder.java:251)
	at com.fasterxml.jackson.databind.introspect.POJOPropertyBuilder.getMetadata(POJOPropertyBuilder.java:231)
	at com.fasterxml.jackson.databind.deser.SettableBeanProperty.<init>(SettableBeanProperty.java:136)

This is a result of the following in ElasticResponse:

...
    @JsonProperty("hits")
    private ElasticResults results;

...

   public List<ElasticHit> getHits() {
        final List<ElasticHit> hits;
        if (results != null) {
            hits = results.getHits();
        } else {
            hits = new ArrayList<>();
        }
        return hits;
    }
...

which conflicts with each other. Apparently earlier version don't mind... but to resolve this we added an JsonIgnore annotation above the offending getter.

   @JsonIgnore
   public List<ElasticHit> getHits() {
        final List<ElasticHit> hits;
        if (results != null) {
            hits = results.getHits();
        } else {
            hits = new ArrayList<>();
        }
        return hits;
    }

SSL for ElasticGeo

Hi,

I'm trying to incorporate this plugin for our project. However, our project requires an https (not http) connection with a cert and a key. Because of this, the ElasticDataStore constructor is crashing on line 102 since an http connection won't work for us: https://github.com/ngageoint/elasticgeo/blob/master/gt-elasticsearch/src/main/java/mil/nga/giat/data/elasticsearch/ElasticDataStore.java. Is there support for https in ElasticGeo? If so, please let me know how to input my cert, key, and https url.

Thanks.

Getting started and vector tiles

I am trying to get started with this plugin and trying to understand its configuration. We have some time dependent spatial data which is being stored in elastic search. I have a specific doctype for these objects. This ends up meaning that the data is split across different indices. Do I specify a specific index and then a regex for the search indices?

enable multi/cross index store setup via wildcard

A lot of people create multiple indices of the same objects to partition the data nicely over time or space.
For instance, if I index twitter all the time, but my majority use case is only to query the last three hours... I can create an index for each day or week or something, and only query a subset of the data most of the time instead of hitting a massive uber index.
Currently, in Elastic, we can use the * at the end of a prefix, and this will enable query and aggregations across any indices beginning with the prefix. This would be great to be able to apply to ElasticGeo store setup.

Support encoded view params

Some clients may pass encoded view params values (e.g. VIEWPARAMS[0]={Q:%7B%22term%22%3A%7B%22standard_ss%22%3A%22IEEE%20802.11b%22%7D%7D}), which will cause an error (Unable to parse native query).

X-Pack Security support

Hi there, I am considering using this Elasticsearch connector for a project as it looks like a good fit what what I need. The Elasticsearch will be secured though using X-Pack so I am wondering weather this connector sopports that. A (very) quick review of the code gives me the impression it is not supported. Is this correct, and if so do you have any plans to add it any time soon? Thanks!

ClassCastException trying to add ES data source

Tried downloading the geoserver 2.12.1 and elasticgeo 2.12.0-RC1 and see the following when trying to add an ES data source:

29 Nov 11:35:25 ERROR [giat.elasticsearch] - org.geoserver.feature.retype.RetypingDataStore cannot be cast to mil.nga.giat.data.elasticsearch.ElasticDataStore
java.lang.ClassCastException: org.geoserver.feature.retype.RetypingDataStore cannot be cast to mil.nga.giat.data.elasticsearch.ElasticDataStore
at mil.nga.giat.elasticsearch.ElasticConfigurationPage.fillElasticAttributes(ElasticConfigurationPage.java:226)
at mil.nga.giat.elasticsearch.ElasticConfigurationPage.(ElasticConfigurationPage.java:99)
at mil.nga.giat.elasticsearch.ElasticConfigurationPanel$1.(ElasticConfigurationPanel.java:74)
at mil.nga.giat.elasticsearch.ElasticConfigurationPanel.(ElasticConfigurationPanel.java:74)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.geoserver.web.data.resource.ResourceConfigurationPage$DataLayerEditTabPanel$1.populateItem(ResourceConfigurationPage.java:141)
at org.apache.wicket.markup.html.list.ListView.onPopulate(ListView.java:523)
at org.apache.wicket.markup.repeater.AbstractRepeater.onBeforeRender(AbstractRepeater.java:124)
at org.apache.wicket.Component.internalBeforeRender(Component.java:950)
at org.apache.wicket.Component.beforeRender(Component.java:1018)
at org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContainer.java:1836)
at org.apache.wicket.Component.onBeforeRender(Component.java:3916)
at org.apache.wicket.Component.internalBeforeRender(Component.java:950)
at org.apache.wicket.Component.beforeRender(Component.java:1018)
at org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContainer.java:1836)
at org.apache.wicket.Component.onBeforeRender(Component.java:3916)
at org.apache.wicket.extensions.markup.html.tabs.TabbedPanel.onBeforeRender(TabbedPanel.java:274)
at org.apache.wicket.Component.internalBeforeRender(Component.java:950)
at org.apache.wicket.Component.beforeRender(Component.java:1018)
at org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContainer.java:1836)
at org.apache.wicket.Component.onBeforeRender(Component.java:3916)
at org.apache.wicket.markup.html.form.Form.onBeforeRender(Form.java:1809)
at org.apache.wicket.Component.internalBeforeRender(Component.java:950)
at org.apache.wicket.Component.beforeRender(Component.java:1018)
at org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContainer.java:1836)
at org.apache.wicket.Component.onBeforeRender(Component.java:3916)
at org.apache.wicket.Page.onBeforeRender(Page.java:801)
at org.apache.wicket.Component.internalBeforeRender(Component.java:950)
at org.apache.wicket.Component.beforeRender(Component.java:1018)
at org.apache.wicket.Component.internalPrepareForRender(Component.java:2236)
at org.apache.wicket.Page.internalPrepareForRender(Page.java:242)
at org.apache.wicket.Component.render(Component.java:2325)
at org.apache.wicket.Page.renderPage(Page.java:1018)
at org.apache.wicket.request.handler.render.WebPageRenderer.renderPage(WebPageRenderer.java:124)
at org.apache.wicket.request.handler.render.WebPageRenderer.respond(WebPageRenderer.java:236)
at org.apache.wicket.core.request.handler.RenderPageRequestHandler.respond(RenderPageRequestHandler.java:175)
at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:895)
at org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64)
at org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:97)
at org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:265)
at org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:222)
at org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:293)
at org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:261)
at org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:203)
at org.apache.wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:137)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.springframework.web.servlet.mvc.ServletWrappingController.handleRequestInternal(ServletWrappingController.java:157)
at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:174)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:50)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:808)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)
at org.geoserver.filters.ThreadLocalsCleanupFilter.doFilter(ThreadLocalsCleanupFilter.java:28)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
at org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegatingFilter.java:75)
at org.geoserver.wms.animate.AnimatorFilter.doFilter(AnimatorFilter.java:71)
at org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegatingFilter.java:71)
at org.geoserver.filters.SpringDelegatingFilter.doFilter(SpringDelegatingFilter.java:46)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
at org.geoserver.platform.AdvancedDispatchFilter.doFilter(AdvancedDispatchFilter.java:50)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:316)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:69)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:126)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:90)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:73)
at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:92)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:69)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:114)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:73)
at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:92)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.geoserver.security.filter.GeoServerAnonymousAuthenticationFilter.doFilter(GeoServerAnonymousAuthenticationFilter.java:54)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:69)
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:205)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:73)
at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:92)
at org.geoserver.security.filter.GeoServerUserNamePasswordAuthenticationFilter.doFilter(GeoServerUserNamePasswordAuthenticationFilter.java:116)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:69)
at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:157)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:73)
at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:92)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:69)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:91)
at org.geoserver.security.filter.GeoServerSecurityContextPersistenceFilter$1.doFilter(GeoServerSecurityContextPersistenceFilter.java:53)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:73)
at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:92)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:213)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:176)
at org.geoserver.security.GeoServerSecurityFilterChainProxy.doFilter(GeoServerSecurityFilterChainProxy.java:152)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
at org.geoserver.filters.LoggingFilter.doFilter(LoggingFilter.java:88)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
at org.geoserver.filters.XFrameOptionsFilter.doFilter(XFrameOptionsFilter.java:89)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
at org.geoserver.filters.GZIPFilter.doFilter(GZIPFilter.java:42)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
at org.geoserver.filters.SessionDebugFilter.doFilter(SessionDebugFilter.java:48)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
at org.geoserver.filters.FlushSafeFilter.doFilter(FlushSafeFilter.java:44)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
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:1061)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215)
at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
at org.eclipse.jetty.server.Server.handle(Server.java:499)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
at java.lang.Thread.run(Thread.java:748)

java.lang.String cannot be cast to java.lang.Number

Hi,
I have installed elasticgeo on geoserver 2.7.1 (oracle java 8). Elasticsearch is version 1.5.2.
When saving a layer i get this error (java.lang.String cannot be cast to java.lang.Number). In the layer editor, when i try to get the Lat/Lon Bounding Box (click on "Compute from native bounds"), the same error appears.

Thanks for helping

Support for Elasticsearch 2.2.0

Hi,

I did not succeed building the extension for Elasticsearch 2.2.0 (the most recent stable one at the time of writing) which is in compliance with the current docs.

Are there any future plans to make this possible anytime soon?
Regards

GML/CSV output fails with numeric type and array response

Feature type will match ES field mapping in the case of numeric types. When search response includes an array of values for numeric fields some output parsers (e.g. GML/CSV) will throw class cast exceptions (e.g. ArrayList cannot be cast to Double).

Null pointer exception when creating multiple layers attached to same elastic search type with different geometry objects

Here are curl commands that will create an index in a local elastic search install to help reproduce this bug.

curl -XPUT 'http://localhost:9200/elasticgeo_index/'

curl -XPUT 'http://localhost:9200/elasticgeo_index/_mapping/bug' -d '
{
"bug" : {
"properties" : {
"field1" : {"type" : "geo_shape",
"tree" : "quadtree",
"tree_levels" : 18},
"field2" : {"type" : "geo_shape",
"tree" : "quadtree",
"tree_levels" : 18}
}
}
}'

Steps to reproduce:

  1. Add a new workspace called "workspace" to geoserver
  2. Add an elastic search data source for index elasticgeo_index
  3. Publish the layer named bug
  4. Map field1 in the layer and save
  5. Go to the add layer window and publish the bug layer again. Close the popup window that appears
  6. Name the layer bug2 and save
  7. Map field2 this time and save
  8. On the publishing tab for bug2 change "Default Style" to polygon
  9. Run the following query that attempts to display both the bug and bug2 layers: http://localhost/geoserver/workspace/wms?service=WMS&version=1.1.0&request=GetMap&layers=workspace:bug,workspace:bug2&styles=&bbox=-130.85168,20.7052,-62.0054,54.1141&width=768&height=372&srs=EPSG:4326&format=application/openlayers&viewparams=f:{"bool":{"must":{"geo_shape":{"bug.field1":{"shape":{"type":"envelope"\,"coordinates":[[-180\,90]\,[180\,-90]]}\,"relation":"within"}\,"_name":null}}}}

The following call stack will appear in geoserver's log:

2015-10-08 18:19:26,077 INFO [geoserver.wms] -
Request: getServiceInfo
2015-10-08 18:19:26,096 ERROR [geotools.rendering] -
java.lang.NullPointerException
at mil.nga.giat.data.elasticsearch.FilterToElasticHelper.visitBinarySpatialOperator(FilterToElasticHelper.java:174)
at mil.nga.giat.data.elasticsearch.FilterToElasticHelper.visitComparisonSpatialOperator(FilterToElasticHelper.java:164)
at mil.nga.giat.data.elasticsearch.FilterToElasticHelper.visitBinarySpatialOperator(FilterToElasticHelper.java:92)
at mil.nga.giat.data.elasticsearch.FilterToElastic.visitBinarySpatialOperator(FilterToElastic.java:1176)
at mil.nga.giat.data.elasticsearch.FilterToElastic.visitBinarySpatialOperator(FilterToElastic.java:708)
at mil.nga.giat.data.elasticsearch.FilterToElastic.visit(FilterToElastic.java:650)
at org.geotools.renderer.lite.FastBBOX.accept(FastBBOX.java:124)
at mil.nga.giat.data.elasticsearch.FilterToElastic.encode(FilterToElastic.java:177)
at mil.nga.giat.data.elasticsearch.FilterToElastic.encode(FilterToElastic.java:190)
at mil.nga.giat.data.elasticsearch.ElasticFeatureSource.prepareSearchRequest(ElasticFeatureSource.java:180)
at mil.nga.giat.data.elasticsearch.ElasticFeatureSource.getReaderInternal(ElasticFeatureSource.java:130)
at org.geotools.data.store.ContentFeatureSource.getReader(ContentFeatureSource.java:612)
at org.geotools.data.store.ContentFeatureCollection.features(ContentFeatureCollection.java:164)
at org.geoserver.feature.RetypingFeatureCollection.features(RetypingFeatureCollection.java:46)
at org.geoserver.feature.RetypingFeatureCollection.features(RetypingFeatureCollection.java:32)
at org.geotools.renderer.lite.StreamingRenderer.drawPlain(StreamingRenderer.java:2388)
at org.geotools.renderer.lite.StreamingRenderer.processStylers(StreamingRenderer.java:2113)
at org.geotools.renderer.lite.StreamingRenderer.paint(StreamingRenderer.java:832)
at org.geoserver.wms.map.RenderedImageMapOutputFormat.produceMap(RenderedImageMapOutputFormat.java:539)
at org.geoserver.wms.map.RenderedImageMapOutputFormat.produceMap(RenderedImageMapOutputFormat.java:260)
at org.geoserver.wms.map.RenderedImageMapOutputFormat.produceMap(RenderedImageMapOutputFormat.java:132)
at org.geoserver.wms.GetMap.executeInternal(GetMap.java:504)
at org.geoserver.wms.GetMap.run(GetMap.java:248)
at org.geoserver.wms.GetMap.run(GetMap.java:119)
at org.geoserver.wms.DefaultWebMapService.getMap(DefaultWebMapService.java:369)
at sun.reflect.GeneratedMethodAccessor258.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:319)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at org.geoserver.kml.WebMapServiceKmlInterceptor.invoke(WebMapServiceKmlInterceptor.java:34)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.geoserver.gwc.wms.CacheSeedingWebMapService.invoke(CacheSeedingWebMapService.java:62)
at org.geoserver.gwc.wms.CacheSeedingWebMapService.invoke(CacheSeedingWebMapService.java:36)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.geoserver.gwc.wms.CachingWebMapService.invoke(CachingWebMapService.java:74)
at org.geoserver.gwc.wms.CachingWebMapService.invoke(CachingWebMapService.java:55)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.geoserver.ows.util.RequestObjectLogger.invoke(RequestObjectLogger.java:55)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at com.sun.proxy.$Proxy79.getMap(Unknown Source)
at sun.reflect.GeneratedMethodAccessor221.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.geoserver.ows.Dispatcher.execute(Dispatcher.java:841)
at org.geoserver.ows.Dispatcher.handleRequestInternal(Dispatcher.java:275)
at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:734)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:295)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at org.geoserver.filters.ThreadLocalsCleanupFilter.doFilter(ThreadLocalsCleanupFilter.java:28)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegatingFilter.java:75)
at org.geoserver.wms.animate.AnimatorFilter.doFilter(AnimatorFilter.java:71)
at org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegatingFilter.java:71)
at org.geoserver.filters.SpringDelegatingFilter.doFilter(SpringDelegatingFilter.java:46)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at org.geoserver.platform.AdvancedDispatchFilter.doFilter(AdvancedDispatchFilter.java:50)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:311)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:69)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:116)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:73)
at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:92)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:69)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:73)
at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:92)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.geoserver.security.filter.GeoServerAnonymousAuthenticationFilter.doFilter(GeoServerAnonymousAuthenticationFilter.java:54)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:69)
at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:150)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:73)
at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:92)
at org.geoserver.security.filter.GeoServerBasicAuthenticationFilter.doFilter(GeoServerBasicAuthenticationFilter.java:83)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:69)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
at org.geoserver.security.filter.GeoServerSecurityContextPersistenceFilter$1.doFilter(GeoServerSecurityContextPersistenceFilter.java:53)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:73)
at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:92)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:173)
at org.geoserver.security.GeoServerSecurityFilterChainProxy.doFilter(GeoServerSecurityFilterChainProxy.java:135)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at org.geoserver.filters.LoggingFilter.doFilter(LoggingFilter.java:83)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at org.geoserver.filters.GZIPFilter.doFilter(GZIPFilter.java:42)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at org.geoserver.filters.SessionDebugFilter.doFilter(SessionDebugFilter.java:48)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at org.geoserver.filters.FlushSafeFilter.doFilter(FlushSafeFilter.java:44)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at org.vfny.geoserver.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:109)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:231)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149)
at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:145)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:559)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:653)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:926)
at java.lang.Thread.run(Thread.java:744)
2015-10-08 18:19:26,108 ERROR [geoserver.ows] -
org.geoserver.platform.ServiceException: Rendering process failed
at org.geoserver.wms.map.RenderedImageMapOutputFormat.produceMap(RenderedImageMapOutputFormat.java:569)
at org.geoserver.wms.map.RenderedImageMapOutputFormat.produceMap(RenderedImageMapOutputFormat.java:260)
at org.geoserver.wms.map.RenderedImageMapOutputFormat.produceMap(RenderedImageMapOutputFormat.java:132)
at org.geoserver.wms.GetMap.executeInternal(GetMap.java:504)
at org.geoserver.wms.GetMap.run(GetMap.java:248)
at org.geoserver.wms.GetMap.run(GetMap.java:119)
at org.geoserver.wms.DefaultWebMapService.getMap(DefaultWebMapService.java:369)
at sun.reflect.GeneratedMethodAccessor258.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:319)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at org.geoserver.kml.WebMapServiceKmlInterceptor.invoke(WebMapServiceKmlInterceptor.java:34)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.geoserver.gwc.wms.CacheSeedingWebMapService.invoke(CacheSeedingWebMapService.java:62)
at org.geoserver.gwc.wms.CacheSeedingWebMapService.invoke(CacheSeedingWebMapService.java:36)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.geoserver.gwc.wms.CachingWebMapService.invoke(CachingWebMapService.java:74)
at org.geoserver.gwc.wms.CachingWebMapService.invoke(CachingWebMapService.java:55)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.geoserver.ows.util.RequestObjectLogger.invoke(RequestObjectLogger.java:55)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at com.sun.proxy.$Proxy79.getMap(Unknown Source)
at sun.reflect.GeneratedMethodAccessor221.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.geoserver.ows.Dispatcher.execute(Dispatcher.java:841)
at org.geoserver.ows.Dispatcher.handleRequestInternal(Dispatcher.java:275)
at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:734)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:295)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at org.geoserver.filters.ThreadLocalsCleanupFilter.doFilter(ThreadLocalsCleanupFilter.java:28)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegatingFilter.java:75)
at org.geoserver.wms.animate.AnimatorFilter.doFilter(AnimatorFilter.java:71)
at org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegatingFilter.java:71)
at org.geoserver.filters.SpringDelegatingFilter.doFilter(SpringDelegatingFilter.java:46)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at org.geoserver.platform.AdvancedDispatchFilter.doFilter(AdvancedDispatchFilter.java:50)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:311)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:69)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:116)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:73)
at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:92)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:69)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:73)
at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:92)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.geoserver.security.filter.GeoServerAnonymousAuthenticationFilter.doFilter(GeoServerAnonymousAuthenticationFilter.java:54)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:69)
at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:150)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:73)
at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:92)
at org.geoserver.security.filter.GeoServerBasicAuthenticationFilter.doFilter(GeoServerBasicAuthenticationFilter.java:83)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:69)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
at org.geoserver.security.filter.GeoServerSecurityContextPersistenceFilter$1.doFilter(GeoServerSecurityContextPersistenceFilter.java:53)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:73)
at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:92)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:173)
at org.geoserver.security.GeoServerSecurityFilterChainProxy.doFilter(GeoServerSecurityFilterChainProxy.java:135)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at org.geoserver.filters.LoggingFilter.doFilter(LoggingFilter.java:83)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at org.geoserver.filters.GZIPFilter.doFilter(GZIPFilter.java:42)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at org.geoserver.filters.SessionDebugFilter.doFilter(SessionDebugFilter.java:48)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at org.geoserver.filters.FlushSafeFilter.doFilter(FlushSafeFilter.java:44)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at org.vfny.geoserver.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:109)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:231)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149)
at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:145)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:559)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:653)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:926)
at java.lang.Thread.run(Thread.java:744)
Caused by: java.lang.NullPointerException
at mil.nga.giat.data.elasticsearch.FilterToElasticHelper.visitBinarySpatialOperator(FilterToElasticHelper.java:174)
at mil.nga.giat.data.elasticsearch.FilterToElasticHelper.visitComparisonSpatialOperator(FilterToElasticHelper.java:164)
at mil.nga.giat.data.elasticsearch.FilterToElasticHelper.visitBinarySpatialOperator(FilterToElasticHelper.java:92)
at mil.nga.giat.data.elasticsearch.FilterToElastic.visitBinarySpatialOperator(FilterToElastic.java:1176)
at mil.nga.giat.data.elasticsearch.FilterToElastic.visitBinarySpatialOperator(FilterToElastic.java:708)
at mil.nga.giat.data.elasticsearch.FilterToElastic.visit(FilterToElastic.java:650)
at org.geotools.renderer.lite.FastBBOX.accept(FastBBOX.java:124)
at mil.nga.giat.data.elasticsearch.FilterToElastic.encode(FilterToElastic.java:177)
at mil.nga.giat.data.elasticsearch.FilterToElastic.encode(FilterToElastic.java:190)
at mil.nga.giat.data.elasticsearch.ElasticFeatureSource.prepareSearchRequest(ElasticFeatureSource.java:180)
at mil.nga.giat.data.elasticsearch.ElasticFeatureSource.getReaderInternal(ElasticFeatureSource.java:130)
at org.geotools.data.store.ContentFeatureSource.getReader(ContentFeatureSource.java:612)
at org.geotools.data.store.ContentFeatureCollection.features(ContentFeatureCollection.java:164)
at org.geoserver.feature.RetypingFeatureCollection.features(RetypingFeatureCollection.java:46)
at org.geoserver.feature.RetypingFeatureCollection.features(RetypingFeatureCollection.java:32)
at org.geotools.renderer.lite.StreamingRenderer.drawPlain(StreamingRenderer.java:2388)
at org.geotools.renderer.lite.StreamingRenderer.processStylers(StreamingRenderer.java:2113)
at org.geotools.renderer.lite.StreamingRenderer.paint(StreamingRenderer.java:832)
at org.geoserver.wms.map.RenderedImageMapOutputFormat.produceMap(RenderedImageMapOutputFormat.java:539)
... 110 more

Error creating data store (ES 5.3.0 & GeoServer 2.10.0)

Hi,

I get the following error (ES 5.3.0, GeoServer 2.10.0, guava-21.0.jar):

Error creating data store, check the parameters. Error message: None of the configured nodes are available: [{#transport#-1}{127.0.0.1}{127.0.0.1:9200}]

Settings:

index_name = my_es_index
search_indices = (empty)
cluster_name = elasticsearch (http://localhost:9200/_nodes... "cluster_name")

Add support for WKT (Elasticsearch 6.2)

From Elasticsearch 6.2, Elasticsearch has support for WKT. I tried to load some WKT points into Geoserver from Elasticsearch using ElasticGeo but the points are not visible on the map I created.

Could this be supported?

array splitter

hey :)

while im using this amaizing plugin, i notice that when i want to get field in my elastic type which is array, there is a logic which gives the array values seperated by semi colon.

This is a problem because when my data has semi colon itself i cannot use split by semi colon.(my data is dynamic).
Can i control somehow on the splitter?

Thanx alot!

wmts support

hey :)

I have tried using WMTS instead of WMS with this plugin and got semi success.

The problems are:

  1. when not using viewparams option in url - the data returns back ok beside of some areas that the tile doesnt return(works with WMS).
  2. when trying using viewparams to add query in url - it is not working and im getting all data back instead of only the queried features. (works in WMS)

Thanx alot!

Support for Elasticsearch circle geo_shape objects

I work in the field of visualising aviation data such as aerodromes, airspaces and airways. Recently I needed to visualise NOTAMs which, at their most basic, consist of a point and circle radius and as far as I know ElasticGeo does not support them.

I have cloned and modified ElasticGeo so that it does support them, albeit quite simplistically. If it is of interest I am happy to contribute my additions to the code base but as it has been a long time since I did so I would like some help with the whole 'pull request' process.

CSV Array Format

Turning this feature on ElasticDataStoreFactory.ARRAY_ENCODING only returns the first element of the array. Change this code in ElasticFeatureReader:

            switch (arrayEncoding) {
                case CSV:
                    // only include first array element when using CSV array encoding
                    value = values.get(0);
                    break;
                default:
                    value = values;
            }

To this:

            switch (arrayEncoding) {
                case CSV:
                    value = StringUtils.join(values, ",");
                    break;
                default:
                    value = values;
            }

Fixes the issue of only returning the first element and works if there are 1 or more than 2 elements in the array or if the array is not numeric. However if there are exactly two elements in a numeric array; then the numeric converters when adding the values to the builder are strips the second element. The reason it works if there are more then two elements is because the converters are failing.

Source Filtering

The following setting:

ElasticDataStoreFactory.SOURCE_FILTERING_ENABLED

Enables source filtering but it appears to add all of the attributes which defeats the purpose.

        if (dataStore.isSourceFilteringEnabled()) {
            // add source includes
            setSourceIncludes(searchRequest);
        }
...

    private void setSourceIncludes(final ElasticRequest searchRequest) throws IOException {
        final ElasticDataStore dataStore = getDataStore();
        final List<ElasticAttribute> attributes = dataStore.getElasticAttributes(entry.getName());
        for (final ElasticAttribute attribute : attributes) {
            if (attribute.isUse() && attribute.isStored()) {
                searchRequest.addField(attribute.getName());
            } else if (attribute.isUse()) {
                searchRequest.addSourceInclude(attribute.getName());
            }
        }
    }

Is there a currently a means to only include attributes specified in query.getProperties().

elasticgeo doesn't support Elasticsearch index aliases

Using Geoserver 2.9.1 and Elasticsearch 2.4.1
Attempting to create a new store using an Elasticsearch index alias name. Geoserver successfully allows the creation of the store, but no layers are presented in the "Publish" screen. Works as expected when the actual index name is used. However, this precludes the ability to publish time-based indexes that are aliased to a single name, i.e. Elasticsearch indexes named "data_week_1", "data_week_2", "data_week_3" are aliased to "data"

Points returned from ES have incorrect coordinates in Geoserver

Geoserver version: 2.12.1 (clean, out-the-box install)
Elasticgeo version: 2.12.1-RC1
ES version: 6.1.1 (clean install)
OS: OSX High Sierra

I have created an index in ES containing a few simple points. When I set up the store/layer in Geoserver everything connects and the point field (location) is detected correctly, with the SRS set to EPSG:4326.

Points are returned correctly from ES as stored (e.g. around [51,0]) - this output is from Wireshark:

{"took":2,"timed_out":false,"_shards":{"total":5,"successful":5,"skipped":0,"failed":0},"hits":{"total":4,"max_score":1.0,"hits":[{"_index":"geotest","_type":"points","_id":"EEbU5WABrjASy1turEup","_score":1.0,"_source":{"name":"point 2","location":"51, 0"}},{"_index":"geotest","_type":"points","_id":"D0bU5WABrjASy1tujkuW","_score":1.0,"_source":{"name":"point 1","location":"51, -1"}},{"_index":"geotest","_type":"points","_id":"EUbU5WABrjASy1tuyktz","_score":1.0,"_source":{"name":"point 3","location":"50, 0"}},{"_index":"geotest","_type":"points","_id":"EkbU5WABrjASy1tu4UtE","_score":1.0,"_source":{"name":"point 4","location":"50, -1"}}]}}

However, when previewing the data, the points are shifted to a completely different area (e.g. [51,-1] -> [-33.78845215, -78.78570557]. Example GML output shown here, but values are same for all output formats:

<gml:featureMember>
  <estest:points fid="points.D0bU5WABrjASy1tujkuW">
    <estest:_id>D0bU5WABrjASy1tujkuW</estest:_id>
    <estest:_index>geotest</estest:_index>
    <estest:_type>points</estest:_type>
    <estest:_score>1.0</estest:_score>
    <estest:_relative_score>1.0</estest:_relative_score>
    <estest:location>
      <gml:Point srsName="http://www.opengis.net/gml/srs/epsg.xml#4326">
        <gml:coordinates xmlns:gml="http://www.opengis.net/gml" decimal="." cs="," ts=" ">-33.78845215,-78.78570557</gml:coordinates>
      </gml:Point>
    </estest:location>
    <estest:name>point 1</estest:name>
    <estest:name.fields.keyword>point 1</estest:name.fields.keyword>
  </estest:points>
</gml:featureMember>

I'm not sure if this is an Elasticgeo issue or a Geoserver config issue - the logs don't reveal much, even at TRACE level and I'm not sure how to resolve. As far as I can tell, everything is set to EPSG:4326 so I don't see why any conversion should take place.

Thanks in advance for any pointers!

How do you configure logging?

Can you please provide an example of configuring the logging to display all elasticsearch requests and responses.

handing query in body

I have an issue where my query to geoserver using a GET request contains a very long URI, for which geoserver returns an error 414 - URI too long.
I saw that geoserver can also get POST request with the query in the body of the request as an XML.
can your plugin handle this kind of http request?

Invalid bounds from data and all fields beside elastic generated (_type) are null

Just set things up. I have elastic 5.4 as my back end. I have successfully added several million records to Elastic. I can view those record just fine in Kibana (including generating a map display).
However, with the geoserver plugin (I am running 2.12.2 geoserver, and using the prebuilt binary plugin) I can not seem to access the data. When I do a compute from bounds the values come back a 0, 0, -1, -1. In the field configuration all the fields come back correctly and show the correct type. I only have a single geometry field and it selected as default.

I can save just fine and publish the layer. However, when I go to layer preview everything except the elastic generated fields (_type, etc.) and fid come back null. See the json below.
Same thing happens if I select long or short names, and whether I select 1 or all of the fields.

Any thoughts on how I can debug this issue. I turned on DEVELOPER and VERBOSE logging in geoserver but nothing interesting shows up in the long.

`

{"type":"FeatureCollection","totalFeatures":10000,"features":[{"type":"Feature","id":"recordset.1b8562dd-ae72-4d8f-928b-b8672b5a12b2","geometry":null,"geometry_name":"actiongeolocation","properties":{"_id":"1b8562dd-ae72-4d8f-928b-b8672b5a12b2","_index":"coalesce-oeevent","_type":"recordset","_score":null,"name":null,"objectkey":null,"source":null,"actiongeofullname":null,"actiongeotype":null,"avgtone":null}},{"type":"Feature","id":"recordset.2151ee58-cd8e-4965-915e-75f13207b4e7","geometry":null,"geometry_name":"actiongeolocation","properties":{"_id":"2151ee58-cd8e-4965-915e-75f13207b4e7","_index":"coalesce-oeevent","_type":"recordset","_score":null,"name":null,"objectkey":null,"source":null,"actiongeofullname":null,"actiongeotype":null,"avgtone":null}},{"type":"Feature","id":"recordset.8196d69d-a942-4fbc-be24-47799786feef","geometry":null,"geometry_name":"actiongeolocation","properties":{"_id":"8196d69d-a942-4fbc-be24-47799786feef","_index":"coalesce-oeevent","_type":"recordset","_score":null,"name":null,"objectkey":null,"source":null,"actiongeofullname":null,"actiongeotype":null,"avgtone":null}},{"type":"Feature","id":"recordset.535d770d-da9a-465a-82a2-cb242b63cf31","geometry":null,"geometry_name":"actiongeolocation","properties":{"_id":"535d770d-da9a-465a-82a2-cb242b63cf31","_index":"coalesce-oeevent","_type":"recordset","_score":null,"name":null,"objectkey":null,"source":null,"actiongeofullname":null,"actiongeotype":null,"avgtone":null}},{"type":"Feature","id":"recordset.17c399c4-53f5-418d-82ac-69609c185086","geometry":null,"geometry_name":"actiongeolocation","properties":{"_id":"17c399c4-53f5-418d-82ac-69609c185086","_index":"coalesce-oeevent","_type":"recordset","_score":null,"name":null,"objectkey":null,"source":null,"actiongeofullname":null,"actiongeotype":null,"avgtone":null}},{"type":"Feature","id":"recordset.7c4e5c1e-8a8d-4f40-87a9-bee01e4ed43d","geometry":null,"geometry_name":"actiongeolocation","properties":{"_id":"7c4e5c1e-8a8d-4f40-87a9-bee01e4ed43d","_index":"coalesce-oeevent","_type":"recordset","_score":null,"name":null,"objectkey":null,"source":null,"actiongeofullname":null,"actiongeotype":null,"avgtone":null}}

`

ClassCastException when walking a mapping with attribute called "type"

When publishing a new layer for an index that contains the following type mapping:

{
  "myindexname" : {
    "mappings" : {
      "baz" : {
    "_all" : {
      "enabled" : false
    },
    "_id" : {
      "path" : "id"
    },
    "_timestamp" : {
      "enabled" : true,
      "store" : true
    },
    "properties" : {
      "crs" : {
        "dynamic" : "true",
        "properties" : {
          "properties" : {
            "dynamic" : "true",
            "properties" : {
              "name" : {
                "type" : "string"
              }
            }
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "geometry" : {
        "type" : "geo_shape",
        "tree" : "quadtree",
      }
    }
      }
    }
  }
}

Geoserver crashes with a stack trace, saying HashMap can't be cast as a String.

The trick is that the mapping above has {"type": {"type": "string"}}, and the value of the first type key is not a string. This stems from ElasticDataStore's walk method.

Build and startup issues

Thank you for creating this geoserver extension... I'm excited to try it out!

I'm running into two different problems. First, mvn install -DskipTests=true -Dskip.integration.tests=true doesn't work for me, when running within the gt-elasticsearch directory. Maven can't find mil.nga.giat:joda-shaded. Is there a repository that I should add to my settings.xml?

Could not find artifact mil.nga.giat:joda-shaded:jar:2.12-SNAPSHOT in maven2-repository.dev.java.net (http://download.java.net/maven/2)

I tried downloading a pre-compiled binary from https://github.com/ngageoint/elasticgeo/releases (I downloaded 2.12.0-RC1), but when I add it to my WEB-INF/lib directory, restart, and attempt to add a new data source, the following error occurs:

org.apache.wicket.WicketRuntimeException: Method onRequest of interface org.apache.wicket.behavior.IBehaviorListener targeted at org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink$1@210bc861 on component [AjaxSubmitLink [Component id = save]] threw an exception at org.apache.wicket.RequestListenerInterface.internalInvoke(RequestListenerInterface.java:268) at org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:241) at org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.invokeListener(ListenerInterfaceRequestHandler.java:248) at org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.respond(ListenerInterfaceRequestHandler.java:234)
...
Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.wicket.RequestListenerInterface.internalInvoke(RequestListenerInterface.java:258) ... 113 more Caused by: java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.JavaType.isReferenceType()Z
...

Likely stemming from an incompatibility of Jackson/json libraries.

Do you have any suggestions? I'm using GeoServer 2.12.0 and Java 1.8.0_151

Deploying precompiled binaries, Geoserver does not start properly

Hi,

I tried to deploy the precompiled binaries on both Geoserver 2.8.1 version and Geoserver 2.7.4 version on a Windows 7 machine with java 1.8.x without success.
What I get is

Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
2016-05-11 23:26:00.377::INFO: Logging to STDERR via org.mortbay.log.StdErrLog
2016-05-11 23:26:00.511::WARN: Deprecated configuration used for C:\GeoServer 2.8.3/webapps
2016-05-11 23:26:00.549::INFO: jetty-6.1.8
0 [main] WARN org.geotools.factory - Can't load a service for category "FilterFactory". Cause is "ServiceConfigurationError: org.opengis.filter.FilterFactory: Provider org.geotools.filter.FilterFactoryImpl could not be instantiated".
10 [main] WARN org.geotools.factory - Can't load a service for category "FilterFactory". Cause is "ServiceConfigurationError: org.opengis.filter.FilterFactory: Provider org.geotools.filter.FilterFactoryImpl could not be instantiated".
17 [main] WARN org.geotools.factory - Can't load a service for category "FilterFactory". Cause is "ServiceConfigurationError: org.opengis.filter.FilterFactory: Provider org.geotools.filter.FilterFactoryImpl could not be instantiated".
26 [main] WARN org.geotools.factory - Can't load a service for category "FilterFactory". Cause is "ServiceConfigurationError: org.opengis.filter.FilterFactory: Provider org.geotools.filter.FilterFactoryImpl could not be instantiated".
2016-05-11 23:26:03.173::WARN: Failed startup of context org.mortbay.jetty.webapp.WebAppContext@1b266842{/geoserver,file:/C:/GeoServer%202.8.3/webapps/geoserver/}
org.geotools.factory.FactoryNotFoundException: No factory of kind "FilterFactory2" found.
at org.geotools.factory.FactoryRegistry.getServiceProvider(FactoryRegistry.java:375)
at org.geotools.factory.FactoryCreator.getServiceProvider(FactoryCreator.java:145)
at org.geotools.factory.CommonFactoryFinder.lookup(CommonFactoryFinder.java:346)
at org.geotools.factory.CommonFactoryFinder.getFilterFactory(CommonFactoryFinder.java:300)
at org.geotools.factory.CommonFactoryFinder.getFilterFactory2(CommonFactoryFinder.java:390)
at org.geoserver.GeoserverInitStartupListener.contextInitialized(GeoserverInitStartupListener.java:185)
at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:540)
at org.mortbay.jetty.servlet.Context.startContext(Context.java:135)
at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1220)
at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:510)
at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:448)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)
at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152)
at org.mortbay.jetty.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:156)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)
at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
at org.mortbay.jetty.Server.doStart(Server.java:222)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)
at org.mortbay.xml.XmlConfiguration.main(XmlConfiguration.java:977)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.mortbay.start.Main.invokeMain(Main.java:183)
at org.mortbay.start.Main.start(Main.java:497)
at org.mortbay.start.Main.main(Main.java:115)
2016-05-11 23:26:03.293::INFO: Opened C:\GeoServer 2.8.3\logs\2016_05_11.request.log
2016-05-11 23:26:03.319::INFO: Started [email protected]:8080

By using a Linux Centos 6.6 with open JDK 1,8 and Geoserver 2.7.x, it works

Are there some prerequisite for Windows 7 that I'm missing?

Thanks in advance

Maven Compile Error

Hi, I've managed to successfully installed in GeoServer and while building with Maven, I encounter a problem when I tried to run mvn verify, integration tests with Elasticsearch.

[ERROR] Failed to execute goal io.fabric8:docker-maven-plugin:0.18.1:start (docker-start) on project gt-elasticsearch: I/O Error: Unable to start container id [8e1a94ca45c0]: driver failed programming external connectivity on endpoint happy_brahmagupta (131a537b12a272664fb1ed63abf77b7a5d446314b9d9b816e2c715f28a1fbcbe): Error starting userland proxy: listen tcp 0.0.0.0:9200: bind: address already in use (Internal Server Error: 500)

Is it possible the error is due to the ipadress and port of Elasticsearch instance? If it is different from localhost, which configuration files should I change?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.