This page describes configuring the JSON index for Apache Pinot.
0.12.0:{
"name": "adam",
"age": 30,
"country": "us",
"addresses":
[
{
"number" : 112,
"street" : "main st",
"country" : "us"
},
{
"number" : 2,
"street" : "second st",
"country" : "us"
},
{
"number" : 3,
"street" : "third st",
"country" : "ca"
}
]
}SELECT *
FROM mytable
WHERE JSON_EXTRACT_SCALAR(person, '$.name', 'STRING') = 'adam'{
"tableIndexConfig": {
"jsonIndexConfigs": {
"person": {
"maxLevels": 2,
"excludeArray": false,
"disableCrossArrayUnnest": true,
"includePaths": null,
"excludePaths": null,
"excludeFields": null
},
...
},
...
}
}{
"name": "adam",
"age": 20,
"addresses": [
{
"country": "us",
"street": "main st",
"number": 1
},
{
"country": "ca",
"street": "second st",
"number": 2
}
],
"skills": [
"english",
"programming"
]
}{
"name": "adam",
"age": 20,
"addresses[0].country": "us",
"addresses[0].street": "main st",
"addresses[0].number": 1,
"skills[0]": "english"
},
{
"name": "adam",
"age": 20,
"addresses[0].country": "us",
"addresses[0].street": "main st",
"addresses[0].number": 1,
"skills[1]": "programming"
},
{
"name": "adam",
"age": 20,
"addresses[1].country": "ca",
"addresses[1].street": "second st",
"addresses[1].number": 2,
"skills[0]": "english"
},
{
"name": "adam",
"age": 20,
"addresses[1].country": "ca",
"addresses[1].street": "second st",
"addresses[1].number": 2,
"skills[1]": "programming"
}{
"name": "adam",
"age": 20
}{
"name": "adam",
"age": 20,
"skills[0]": "english"
},
{
"name": "adam",
"age": 20,
"skills[1]": "programming"
}{
"name": "adam",
"age": 20
}{
"name": "adam",
"age": 20,
"addresses[0].country": "us",
"addresses[0].street": "main st",
"addresses[0].number": 1
},
{
"name": "adam",
"age": 20,
"addresses[0].country": "us",
"addresses[0].street": "main st",
"addresses[0].number": 1
},
{
"name": "adam",
"age": 20,
"skills[0]": "english"
},
{
"name": "adam",
"age": 20,
"skills[1]": "programming"
}{
"name": "adam",
"addresses[0].country": "us"
},
{
"name": "adam",
"addresses[1].country": "ca"
}{
"name": "adam",
"addresses[0].country": "us",
"addresses[0].street": "main st",
"skills[0]": "english"
},
{
"name": "adam",
"addresses[0].country": "us",
"addresses[0].street": "main st",
"skills[1]": "programming"
},
{
"name": "adam",
"addresses[1].country": "ca",
"addresses[1].street": "second st",
"skills[0]": "english"
},
{
"name": "adam",
"addresses[1].country": "ca",
"addresses[1].street": "second st",
"skills[1]": "programming"
}{
"name": "adam",
"addresses[0].country": "us",
"addresses[0].number": 1,
"skills[0]": "english"
},
{
"name": "adam",
"addresses[0].country": "us",
"addresses[0].number": 1,
"skills[1]": "programming"
},
{
"name": "adam",
"addresses[1].country": "ca",
"addresses[1].number": 2,
"skills[0]": "english"
},
{
"name": "adam",
"addresses[1].country": "ca",
"addresses[1].number": 2,
"skills[1]": "programming"
}{
"tableIndexConfig": {
"jsonIndexColumns": [
"person",
...
],
...
}
}SELECT ...
FROM mytable
WHERE JSON_MATCH(person, '"$.name"=''adam''')SELECT ...
FROM mytable
WHERE JSON_MATCH(person, '"$.name"=''adam''')SELECT ...
FROM mytable
WHERE JSON_MATCH(person, '"$.addresses[*].number"=112')SELECT ...
FROM mytable
WHERE JSON_MATCH(person, '"$.name"=''adam'' AND "$.addresses[*].number"=112')SELECT ...
FROM mytable
WHERE JSON_MATCH(person, '"$.addresses[0].number"=112')SELECT ...
FROM mytable
WHERE JSON_MATCH(person, '"$.phone" IS NOT NULL')SELECT ...
FROM mytable
WHERE JSON_MATCH(person, '"$.addresses[0].floor" IS NULL')SELECT ...
FROM mytable
WHERE JSON_MATCH(person, '"$.addresses[*].street"=''main st'' AND "$.addresses[*].country"=''ca''')SELECT ...
FROM mytable
WHERE JSON_MATCH(person, '"$.addresses[*].street"=''main st''') AND JSON_MATCH(person, '"$.addresses[*].country"=''ca''')SELECT ...
FROM mytable
WHERE JSON_MATCH(person, '"$.addresses[0].street"=''main st''') AND JSON_MATCH(person, '"$.addresses[1].street"=''second st''')["item1", "item2", "item3"]SELECT ...
FROM mytable
WHERE JSON_MATCH(arrayCol, '"$[*]"=''item1''')SELECT ...
FROM mytable
WHERE JSON_MATCH(arrayCol, '"$[1]"=''item2''')123
1.23
"Hello World"SELECT ...
FROM mytable
WHERE JSON_MATCH(valueCol, '"$"=123')nullSELECT ...
FROM mytable
WHERE JSON_MATCH(nullableCol, '"$" IS NULL')