Java search for lat/long fields

Hi David,
I think I am still missing something.
When I try to create mapping before I create river for the collection Asset
I get this exception:
org.elasticsearch.indices.IndexMissingException: [asset_index] missing
at
org.elasticsearch.cluster.metadata.MetaData.convertFromWildcards(MetaData.java:602)
at
org.elasticsearch.cluster.metadata.MetaData.concreteIndices(MetaData.java:514)
at
org.elasticsearch.cluster.metadata.MetaData.concreteIndices(MetaData.java:497)
at
org.elasticsearch.action.admin.indices.mapping.put.TransportPutMappingAction.doExecute(TransportPutMappingAction.java:74)
at
org.elasticsearch.action.admin.indices.mapping.put.TransportPutMappingAction.doExecute(TransportPutMappingAction.java:41)
at
org.elasticsearch.action.support.TransportAction.execute(TransportAction.java:61)
at
org.elasticsearch.client.node.NodeIndicesAdminClient.execute(NodeIndicesAdminClient.java:72)
at
org.elasticsearch.client.support.AbstractIndicesAdminClient.putMapping(AbstractIndicesAdminClient.java:290)
at
org.elasticsearch.action.admin.indices.mapping.put.PutMappingRequestBuilder.doExecute(PutMappingRequestBuilder.java:109)
at
org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:62)
at
org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:57)
at com.tycoint.eams.servlet.UploadXml.buildAssetMapping(UploadXml.java:147)
at com.tycoint.eams.servlet.UploadXml.doPost(UploadXml.java:46)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
at
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)

When you say "send mapping before creating river" you mean to execute this
code - is that right?:
PutMappingResponse response = node.client().admin().indices()
.preparePutMapping("asset_index")
.setType("Asset")
.setSource(xbMapping)
.execute().actionGet();
Regards,
Janusz

On Thursday, January 10, 2013 1:53:00 PM UTC+11, JD wrote:

Hi,

I have a quite a few documents like this that are indexed in elasticsearch
db (attached is just one for an example):

{

"took": 28,

"timed_out": false,

"_shards": {

    "total": 5,

    "successful": 5,

    "failed": 0

},

"hits": {

    "total": 694,

    "max_score": 1,

    "hits": [

        {

            "_index": "asset_index",

            "_type": "Asset",

            "_id": "4",

            "_score": 1,

            "_source": {

                "_id": 4,

                "className": "com.tycoint.eams.mongodb.AssetDB",

                "name": "FCC_SRV02",

                "serialNo": "Service Tag: 5S2HB2S\nExpress Service 

Tag: 12581131348",

                "description": "Meridian Server Node 2 (Dell PowerEdge 

R710)",

                "location": {

                    "latitude": 5,

                    "longitude": 5

                },

                "address": {

                    "countryCode": "AU",

                    "state": "VIC",

                    "city": "Melbourne",

                    "postcode": "",

                    "street": "FCC",

                    "street2": "",

                    "detail": ""

                },

                "properties": {

                    "K1X3X15": "20121109",

                    "K2X1X1": "10.10.10.11",

                    "K1X3X14": "",

                    "K1X3X13": "",

                    "K2X1X2": "",

                    "K1X3X12": "02 8972 5897",

                    "K2X1X3": "FCC",

                    "K2X1X4": "10.0",

                    "K2X1X5": "",

                    "K1X3X16": "1 Year",

                    "K1X3X8": "",

                    "K1X1X1": "FCC",

                    "K1X2X5": "",

                    "K1X2X4": "FCC",

                    "K1X1X2": "PLD-DRG-A-6112",

                    "K1X3X7": "Dell PowerEdge R710",

                    "K1X1X3": "",

                    "K1X3X9": "Current",

                    "K1X2X1": "Server",

                    "K1X3X11": "Zac Cochrane",

                    "K1X3X10": "DELL Aust Pty Ltd",

                    "K1X2X3": "FCC",

                    "K1X2X2": "FCC",

                    "K3X1X4": "",

                    "K3X1X3": "",

                    "K3X1X2": "",

                    "K3X1X1": "",

                    "K1X3X5": "Physical Key: 

YTF2W-KFJ3P-3W447-8K3J4-42VVQ\nVirtual Key: 39C2W-H7QWQ-DBH43-37MJ8-HPD2G",

                    "K1X3X6": "",

                    "K1X3X3": "IM0004-D-0003 Hardware Architectural 

Design Document \nIM0004-D-0004 Peninsula link Device List",

                    "K1X3X4": "IM0004-PLG-SP-I-0036 Dell PowerEdge 

R710",

                    "K1X3X1": "20111109",

                    "K1X3X2": "Meridian Cluster Node2"

                },

                "productId": 4,

                "assetCategoryId": 0

            }

        }

    ]

}

As you can see my location field has two sub fields latitude/longitude
(under _source).

I would like to retrieve all documents with the distance 500m from
location [1, 1] using Java.

I am trying to play with this code:

SearchRequestBuilder srb =
client.prepareSearch("asset_index").setTypes("Asset").setSearchType(SearchType.DEFAULT).setQuery(QueryBuilders.matchAllQuery());

srb.setFilter(FilterBuilders.geoDistanceRangeFilter("filter1").lat(1).lon(1).geoDistance(
GeoDistance.PLANE));

How can I specify the distance 500 m from lat/long[1/1]?

Any suggestions?

Regards,

Janusz

--