, .
, , :
// All good, should match
curl -XPUT 'http://localhost:9200/twitter/tweet/1' -d '{
"name": "Athena",
"version": 1,
"db": {
"@type": "Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 64bit",
"oracle_props": [
{
"@name": "open_cursors",
"@value": 4000
},
{
"@name": "USER_ROLE_PRIVS_COUNT",
"@value": 1
},
{
"@name": "CREATE_PERMISSION",
"@value": "Y"
}
]
}
}'
// open cursors missing, should match
curl -XPUT 'http://localhost:9200/twitter/tweet/2' -d '{
"name": "Athena",
"version": 1,
"db": {
"@type": "Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 64bit",
"oracle_props": [
{
"@name": "USER_ROLE_PRIVS_COUNT",
"@value": 2
},
{
"@name": "CREATE_PERMISSION",
"@value": "N"
}
]
}
}'
// open_cursors less than 4000, should match
curl -XPUT 'http://localhost:9200/twitter/tweet/3' -d '{
"name": "Athena",
"version": 1,
"db": {
"@type": "Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 64bit",
"oracle_props": [
{
"@name": "open_cursors",
"@value": 2134
},
{
"@name": "USER_ROLE_PRIVS_COUNT",
"@value": 6
},
{
"@name": "CREATE_PERMISSION",
"@value": "N"
}
]
}
}'
// Different name, shouldn't match
curl -XPUT 'http://localhost:9200/twitter/tweet/4' -d '{
"name": "Alexandroupolis",
"version": 1,
"db": {
"@type": "Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 64bit",
"oracle_props": [
{
"@name": "open_cursors",
"@value": 4000
},
{
"@name": "USER_ROLE_PRIVS_COUNT",
"@value": 1
},
{
"@name": "CREATE_PERMISSION",
"@value": "Y"
}
]
}
}'
// open_cursors more than 4000, shouldn't match
curl -XPUT 'http://localhost:9200/twitter/tweet/5' -d '{
"name": "Athena",
"version": 1,
"db": {
"@type": "Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 64bit",
"oracle_props": [
{
"@name": "open_cursors",
"@value": 6500
},
{
"@name": "USER_ROLE_PRIVS_COUNT",
"@value": 1
},
{
"@name": "CREATE_PERMISSION",
"@value": "Y"
}
]
}
}'
, 3 (ID 1,2,3), .
, , , , - ?
, OR
curl -XGET 'http://localhost:9200/twitter/tweet/_search?pretty=true' -d '
{
"query" : {
"filtered" : {
"filter" : {
/* Set up two conditions */
"or" : [
/* First */
{
/* Check for open_cursors AND value < 4000 */
"bool" : {
"must" : [
/* Same nested query as in other questions answer */
{
"nested" : {
"path" : "db.oracle_props",
"filter" : {
"bool" : {
"must" : [
{
"term": {
"db.oracle_props.@name": "open_cursors"
}
},
{
"range": {
"db.oracle_props.@value": {
"lte": 4000
}
}
}
]
}
}
}
}
]
}
},
/* OR */
{
"bool" : {
/* watch out: negation, this MUST NOT be found*/
"must_not" : [
{
"nested" : {
"path" : "db.oracle_props",
"filter" : {
"bool" : {
/* We do not want open_cursors to be in the nested document */
"must" : [
{
"term": {
"db.oracle_props.@name": "open_cursors"
}
}
]
}
}
}
}
]
}
}
]
},
/* the query for the non-nested things */
"query" : {
"bool" : {
"must" : [
{
"match" : {"tweet.name" : "Athena"}
},
{
"match" : {"tweet.db.@type" : "Oracle"}
}
]
}
}
}
}
}
'
1,2 3.
:
. @TuanHuynh
curl -XGET 'http://localhost:9200/twitter/tweet/_search?pretty=true' -d '
{
"query" : {
"filtered" : {
"filter" : {
/* Set up two conditions */
"or" : [
/* First */
{
"nested" : {
"path" : "db.oracle_props",
"filter" : {
"bool" : {
"must" : [
{
"term": {
"db.oracle_props.@name": "open_cursors"
}
},
{
"range": {
"db.oracle_props.@value": {
"lte": 4000
}
}
}
]
}
}
}
},
/* OR */
{
"nested" : {
"path" : "db.oracle_props",
"filter" : {
"bool" : {
/* We do not want open_cursors to be in the nested document */
"must" : [
{
"term": {
"db.oracle_props.@name": "open_cursors"
}
}
]
}
}
}
}
]
},
/* the query for the non-nested things */
"query" : {
"bool" : {
"must" : [
{
"match" : {"tweet.name" : "Athena"}
},
{
"match" : {"tweet.db.@type" : "Oracle"}
}
]
}
}
}
}
}
'