Ankit: Geode provided lucene query on json field. Your query can be supported. https://gemfire.docs.pivotal.io/910/geode/tools_modules/lucene_integration.html
However in above document, it did not provided a query example on JSON object. I can give you some sample code to query on JSON. Regards Xiaojian Zhou On 11/22/20, 11:53 AM, "ankit Soni" <ankit.soni.ge...@gmail.com> wrote: Hello geode-devs, please provide a guidance on this. Ankit. On Sat, 21 Nov 2020 at 10:23, ankit Soni <ankit.soni.ge...@gmail.com> wrote: > Hello team, > > I am *evaluating usage of Geode (1.12) with storing JSON documents and > querying the same*. I am able to store the json records successfully in > geode but seeking guidance on how to query them. > More details on code and sample json is, > > > *Sample client-code* > > import org.apache.geode.cache.client.ClientCache; > import org.apache.geode.cache.client.ClientCacheFactory; > import org.apache.geode.cache.client.ClientRegionShortcut; > import org.apache.geode.pdx.JSONFormatter; > import org.apache.geode.pdx.PdxInstance; > > public class MyTest { > > *//NOTE: Below is truncated json, single json document can max contain an array of col1...col30 (30 diff attributes) within data. * > public final static String jsonDoc_2 = "{" + > "\"data\":[{" + > "\"col1\": {" + > "\"k11\": \"aaa\"," + > "\"k12\":true," + > "\"k13\": 1111," + > "\"k14\": \"2020-12-31:00:00:00\"" + > "}," + > "\"col2\":[{" + > "\"k21\": \"222222\"," + > "\"k22\": true" + > "}]" + > "}]" + > "}"; > > * //NOTE: Col1....col30 are mix of JSONObject ({}) and JSONArray ([]) as shown above in jsonDoc_2;* > > public static void main(String[] args){ > > //create client-cache > ClientCache cache = new ClientCacheFactory().addPoolLocator(LOCATOR_HOST, PORT).create(); > Region<String, PdxInstance> region = cache.<String, PdxInstance>createClientRegionFactory(ClientRegionShortcut.CACHING_PROXY) > .create(REGION_NAME); > > //store json document > region.put("key", JSONFormatter.fromJSON(jsonDoc_2)); > > //How to query json document like, > > // 1. select col2.k21, col1, col20 from /REGION_NAME where data.col2.k21 = '222222' OR data.col2.k21 = '333333' > > // 2. select col2.k21, col1.k11, col1 from /REGION_NAME where data.col1.k11 in ('aaa', 'xxx', 'yyy') > } > } > > *Server: Region-creation* > > gfsh> create region --name=REGION_NAME --type=PARTITION --redundant-copies=1 --total-num-buckets=61 > > > *Setup: Distributed cluster of 3 nodes > * > > *My Observations/Problems* > - Put operation takes excessive time: region.put("key", > JSONFormatter.fromJSON(jsonDoc_2)); - Fetching a single record from () a > file and Storing in geode approx. takes . 3 secs > Is there any suggestions/configuration related to JSONFormatter API or > other to optimize this...? > > *Looking forward to guidance on querying this JOSN for above sample > queries.* > > *Thanks* > *Ankit* >