Hi @ankit Soni<mailto:ankit.soni.ge...@gmail.com>,

I would say the kind of request you want to execute can't be (or at least 
easily) done. And let me explain what I mean.
JSON objects are encapsulated as something called PdxInstance's and there are 
certain restrictions when it comes to querying these type objects:

You can't make queries iterating over the elements of an array. I.E's:

  *   SELECT data[*].col1 FROM /REGION_NAME WHERE data[*].col1
  *   SELECT data[*].col1 FROM /REGION_NAME WHERE data[*].col2[*].k21 = '222222'
  *   SELECT * FROM /REGION_NAME WHERE data[*].col2[*].k21 = '222222'

The query syntax in a Elasticsearch fashion is not available in Geode as I am 
aware.
Maybe, someone else know If there is a way to execute these queries with Lucene?

Sorry not to be able to help too much :S
BR,
Mario.
________________________________
From: ankit Soni <ankit.soni.ge...@gmail.com>
Sent: Sunday, November 22, 2020 8:52 PM
To: dev@geode.apache.org <dev@geode.apache.org>
Subject: Re: Geode - store and query JSON documents

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