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*
    >

Reply via email to