Skip to content

Instantly share code, notes, and snippets.

@kimchy
Created May 27, 2011 11:06
Show Gist options
  • Save kimchy/995045 to your computer and use it in GitHub Desktop.
Save kimchy/995045 to your computer and use it in GitHub Desktop.
curl localhost:9200/_search -d '{
"query" : {
"filtered" : {
"query" : {"match_all" : {}},
"filter" : {
"and" : [
{
"range" : {
"file_size" : {"from" : 10, "to" : 10000}
}
},
{
"range" : {
"file_size" : {"from" : 10001, "to" : 1000001}
}
}
]
}
}
}
}'
@agnellvj
Copy link

agnellvj commented Jul 5, 2011

is it possible to add another "filter" such as "or" and have it work? I tried to add two different "filter" groups, one having an "and" filter and the other an "or" filter with no luck.

@markokke
Copy link

I'm trying to do multiple filters against a NESTED object. The keyword in the nested object is setup not_analyzed. It works great with one filter but once I add the other I get nothing back. What might I be doing wrong?

Here is the REST JSON code I'm using:

{
"query": {
"nested": {
"_scope": "productscope",
"path": "productkeywords",
"score_mode": "avg",
"query" : {
"filtered" : {
"query": { "match_all" : {} },
"filter" : {
"and" : [
{
"term" : {"productkeywords.keyword": "Wi-Fi" }
},
{
"term" : {"productkeywords.keyword": "Other" }
}
]
}
}
}
}
}
}

Here is an example of the JSON result that works:

        {
           "_index": "products",
           "_type": "all",
           "_id": "1005",
           "_score": 1,
           "_source":
           {
               "mktprodfamilytransid": 1005,
               "name": "iDigi Telehealth Application Kit",
               "descriptionhtml": "

The iDigi Telehealth Application Kit enables the creation of secure, highly scalable cloud-connected healthcare gateway solutions right out of the box. Based on the Freescale® Semiconductor Home Health Hub reference design, this kit brings wireless and wired connectivity to a wide array of healthcare devices and sensors. The iDigi® Device Cloud™ provides remote management and secure data integration capabilities, allowing customers to build innovative and connected telehealth solutions for the medical and healthcare market.
",
"teasertext": "

Includes Freescale Semiconductor Home Health Hub (HHH) reference design
Built-in iDigi Device Cloud™ services for anywhere, anytime information access
Integrated wired and wireless connectivity options
Microsoft Windows Emdedded Compact 7 and Linux BSP support included

",
"shortdescription": "Cloud-enabled Home Health Hub reference design",
"productkeywords":
[
{
"keywordcategoryid": 1,
"keywordcategory": "Frequency",
"keywordcategoryslug": "freq",
"keywordid": 6,
"keyword": "Other",
"keywordslug": "other"
},
{
"keywordcategoryid": 2,
"keywordcategory": "Wireless Products",
"keywordcategoryslug": "wireless",
"keywordid": 8,
"keyword": "Wi-Fi",
"keywordslug": "wifi"
},
{
"keywordcategoryid": 2,
"keywordcategory": "Wireless Products",
"keywordcategoryslug": "wireless",
"keywordid": 10,
"keyword": "ZigBee",
"keywordslug": "zigbee"
},
{
"keywordcategoryid": 3,
"keywordcategory": "Wired Connectivity",
"keywordcategoryslug": "wired",
"keywordid": 13,
"keyword": "Ethernet",
"keywordslug": "ethernet"
},
{
"keywordcategoryid": 3,
"keywordcategory": "Wired Connectivity",
"keywordcategoryslug": "wired",
"keywordid": 15,
"keyword": "Serial",
"keywordslug": "serial"
}
]
}
}

@markokke
Copy link

I'm trying to do multiple filters against a NESTED object. The keyword in the nested object is setup not_analyzed. It works great with one filter but once I add the other I get nothing back. What might I be doing wrong?

Here is the REST JSON code I'm using:

{
"query": {
"nested": {
"_scope": "productscope",
"path": "productkeywords",
"score_mode": "avg",
"query" : {
"filtered" : {
"query": { "match_all" : {} },
"filter" : {
"and" : [
{
"term" : {"productkeywords.keyword": "Wi-Fi" }
},
{
"term" : {"productkeywords.keyword": "Other" }
}
]
}
}
}
}
}
}

Here is an example of the JSON result that works:

        {
           "_index": "products",
           "_type": "all",
           "_id": "1005",
           "_score": 1,
           "_source":
           {
               "mktprodfamilytransid": 1005,
               "name": "iDigi Telehealth Application Kit",
               "descriptionhtml": "

The iDigi Telehealth Application Kit enables the creation of secure, highly scalable cloud-connected healthcare gateway solutions right out of the box. Based on the Freescale® Semiconductor Home Health Hub reference design, this kit brings wireless and wired connectivity to a wide array of healthcare devices and sensors. The iDigi® Device Cloud™ provides remote management and secure data integration capabilities, allowing customers to build innovative and connected telehealth solutions for the medical and healthcare market.
",
"teasertext": "

Includes Freescale Semiconductor Home Health Hub (HHH) reference design
Built-in iDigi Device Cloud™ services for anywhere, anytime information access
Integrated wired and wireless connectivity options
Microsoft Windows Emdedded Compact 7 and Linux BSP support included

",
"shortdescription": "Cloud-enabled Home Health Hub reference design",
"productkeywords":
[
{
"keywordcategoryid": 1,
"keywordcategory": "Frequency",
"keywordcategoryslug": "freq",
"keywordid": 6,
"keyword": "Other",
"keywordslug": "other"
},
{
"keywordcategoryid": 2,
"keywordcategory": "Wireless Products",
"keywordcategoryslug": "wireless",
"keywordid": 8,
"keyword": "Wi-Fi",
"keywordslug": "wifi"
},
{
"keywordcategoryid": 2,
"keywordcategory": "Wireless Products",
"keywordcategoryslug": "wireless",
"keywordid": 10,
"keyword": "ZigBee",
"keywordslug": "zigbee"
},
{
"keywordcategoryid": 3,
"keywordcategory": "Wired Connectivity",
"keywordcategoryslug": "wired",
"keywordid": 13,
"keyword": "Ethernet",
"keywordslug": "ethernet"
},
{
"keywordcategoryid": 3,
"keywordcategory": "Wired Connectivity",
"keywordcategoryslug": "wired",
"keywordid": 15,
"keyword": "Serial",
"keywordslug": "serial"
}
]
}
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment