A newer version of this documentation is available.

View Latest
March 16, 2025
+ 12
Couchbase Full Text Search supports running multiple types of queries through curl/http request.

Term Query

The below sample responds with a list of documents in which the field type contains the term airline.

The query works only for the terms with single word.

Curl Request

JSON
curl -XPOST -H "Content-Type: application/json" -u <username>:<password> \ http://localhost:8094/api/index/DemoIndex/query -d '{ "query": { "term": "giverny", "field": "title" } }'

Curl Response

{
  "status":{
    "total":1,
    "failed":0,
    "successful":1
  },
  "request":{
    "query":{
      "term":"giverny",
      "field":"title"
    },
    "size":10,
    "from":0,
    "highlight":null,
    "fields":null,
    "facets":null,
    "explain":false,
    "sort":["-_score"],
    "includeLocations":false,
    "search_after":null,
    "search_before":null
  },
  "hits":[
    {
      "index":"DemoIndex_76059e8b3887351c_4c1c5584",
      "id":"hotel_10064",
      "score":10.033205341869529,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_76059e8b3887351c_4c1c5584",
      "id":"hotel_10063",
      "score":10.033205341869529,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    }
  ],
  "total_hits":2,
  "max_score":10.033205341869529,
  "took":219177695,
  "facets":null
}

Phrase query

The below sample responds with a list of documents in which the field title contains specified phrase. For example, Glossop or Giverny.

Curl Request

curl -XPOST -H "Content-Type: application/json" -u <username>:<password> \
http://localhost:8094/api/index/DemoIndex/query -d'{
	"query": {
		"terms": ["glencoe", "youth", "hostel"],
		"field": "name"
	}
}'

Curl Response

{
  "status":{
    "total":1,
    "failed":0,
    "successful":1
  },
  "request":{
    "query":{
      "terms":["glencoe","youth","hostel"],
      "field":"name"
    },
    "size":10,
    "from":0,
    "highlight":null,
    "fields":null,
    "facets":null,
    "explain":false,
    "sort":["-_score"],
    "includeLocations":false,
    "search_after":null,
    "search_before":null
  },
  "hits":[
    {
      "index":"DemoIndex_76059e8b3887351c_4c1c5584",
      "id":"hotel_10142",
      "score":8.77552218572323,
      "locations":{
        "name":{
          "glencoe":[
            {
              "pos":1,
              "start":0,
              "end":7,
              "array_positions":null
            }
          ],
          "hostel":[
            {
              "pos":3,
              "start":14,
              "end":20,
              "array_positions":null
            }
          ],
          "youth":[
            {
              "pos":2,
              "start":8,
              "end":13,
              "array_positions":null
            }
          ]
        }
      },
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    }
  ],
  "total_hits":1,
  "max_score":8.77552218572323,
  "took":199844879,
  "facets":null
}

Match Query

The below sample responds with a list of documents in which the field name contains the exact matching term specified in the term field. For example, "40-Mile Air".

Curl Request

curl -XPOST -H "Content-Type: application/json" -u <username>:<password> \
http://localhost:8094/api/index/DemoIndex/query -d '{
"query": {
  "field": "name",
  "match": "40-Mile Air"
  }
}'

Curl Response

{
  "status":{
    "total":1,
    "failed":0,
    "successful":1
  },
	"request":{
    "query":{
      "match":"40-Mile Air",
      "field":"name",
      "prefix_length":0,
      "fuzziness":0,
      "operator":"or"
    },
    "size":10,
    "from":0,
    "highlight":null,
    "fields":null,
    "facets":null,
    "explain":false,
    "sort":["-_score"],
    "includeLocations":false,
    "search_after":null,
    "search_before":null
  },
	"hits":[
		{
      "index":"DemoIndex_580e3ee6ba3ac900_4c1c5584",
      "id":"airportDoc",
      "score":10.30528795525373,
      "sort":["_score"],
      "fields":{"_$c":"airline"}
    },
    {
      "index":"DemoIndex_580e3ee6ba3ac900_4c1c5584",
      "id":"hotel_16687",
      "score":1.085367329598051,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    }
  ],
	"total_hits":2,
  "max_score":10.30528795525373,
  "took":86844745,
  facets":null
}

Match_Phrase query

The below sample responds with a list of documents in which the field name contains the exactly matching phrase specifed in match_phrase. For example, 40-Mile Air.

Curl Request

curl -XPOST -H "Content-Type: application/json" -u <username>:<password> \
http://localhost:8094/api/index/DemoIndex/query -d '{
  "query": {
    "match_phrase": "40-Mile Air",
    "field": "name"
  }
}'

Curl Response

{
  "status":{
    "total":1,
    "failed":0,
    "successful":1
  },
  "request":{
    "query":{
      "match_phrase":
      "40-Mile Air",
      "field":"name"
    },
    "size":10,
    "from":0,
    "highlight":null,
    "fields":null,
    "facets":null,
    "explain":false,
    "sort":["-_score"],
    "includeLocations":false,
    "search_after":null,
    "search_before":null
  },
  "hits":[
    {
      "index":"DemoIndex_580e3ee6ba3ac900_4c1c5584",
      "id":"airportDoc",
      "score":10.305287955253732,
      "locations":{
        "name":{
          "40":[
            {
              "pos":1,
              "start":0,
              "end":2,
              "array_positions":null
            }
          ],
          "air":[
            {
              "pos":3,
              "start":8,
              "end":11,
              "array_positions":null
            }
          ],
          "mile":[
            {
              "pos":2,
              "start":3,
              "end":7,
              "array_positions":null
            }
          ]
        }
      },
      "sort":["_score"],
      "fields":{"_$c":"airline"}
    }
  ],
  "total_hits":1,
  "max_score":10.305287955253732,
  "took":62498613,
  "facets":null
}

Fuzzy Query

The below sample responds with a list of documents in which the field name contains the term that matches with the phrase specified in the match field. For example, 40-Mile Air. It considers the matching to a degree specified in the fuzziness field instead of exact matching.

Curl Request

curl -XPOST -H "Content-Type: application/json" -u <username>:<password> \
http://localhost:8094/api/index/DemoIndex/query -d '{
  "query": {
    "field": "name",
    "match": "40-Mile Air",
    "fuzziness": 2
  }
}'

Curl Response

{
  "status":{
    "total":1,
    "failed":0,
    "successful":1
  },
  "request":{
    "query":{
      "match":"40-Mile Air",
      "field":"name",
      "prefix_length":0,
      "fuzziness":2,
      "operator":"or"
    },
    "size":10,
    "from":0,
    "highlight":null,
    "fields":null,
    "facets":null,
    "explain":false,
    "sort":["-_score"],
    "includeLocations":false,
    "search_after":null,
    "search_before":null
  },
  "hits":[
      {
        "index":"DemoIndex_580e3ee6ba3ac900_4c1c5584",
        "id":"hotel_19199","score":0.17049220881184127,
        "sort":["_score"],
        "fields":{"_$c":"hotel"}
      },
      {
        "index":"DemoIndex_580e3ee6ba3ac900_4c1c5584",
        "id":"airportDoc",
        "score":0.0956994969941305,
        "sort":["_score"],
        "fields":{"_$c":"airline"}
      },
      {
        "index":"DemoIndex_580e3ee6ba3ac900_4c1c5584",
        "id":"hotel_21608",
        "score":0.05690871682349641,
        "sort":["_score"],
        "fields":{"_$c":"hotel"}
      },
      {
        "index":"DemoIndex_580e3ee6ba3ac900_4c1c5584",
        "id":"hotel_19326",
        "score":0.05579005002540549,
        "sort":["_score"],
        "fields":{"_$c":"hotel"}
      },
      {
        "index":"DemoIndex_580e3ee6ba3ac900_4c1c5584",
        "id":"hotel_21037",
        "score":0.05061580360832486,
        "sort":["_score"],
        "fields":{"_$c":"hotel"}
      },
      {
        "index":"DemoIndex_580e3ee6ba3ac900_4c1c5584",
        "id":"hotel_35854",
        "score":0.04431672583269436,
        "sort":["_score"],
        "fields":{"_$c":"hotel"}
      },
      {
        "index":"DemoIndex_580e3ee6ba3ac900_4c1c5584",
        "id":"hotel_3491",
        "score":0.04321478718467854,
        "sort":["_score"],
        "fields":{"_$c":"hotel"}
      },
      {
        "index":"DemoIndex_580e3ee6ba3ac900_4c1c5584",
        "id":"hotel_20421",
        "score":0.04286437075446538,
        "sort":["_score"],
        "fields":{"_$c":"hotel"}
      },
      {
        "index":"DemoIndex_580e3ee6ba3ac900_4c1c5584",
        "id":"hotel_1362",
        "score":0.037911531284201695,
        "sort":["_score"],
        "fields":{"_$c":"hotel"}
      },
      {
        "index":"DemoIndex_580e3ee6ba3ac900_4c1c5584",
        "id":"hotel_21721",
        "score":0.037911531284201695,
        "sort":["_score"],
        "fields":{"_$c":"hotel"}
      }
    ],
    "total_hits":163,
    "max_score":0.17049220881184127,
    "took":21410046,
    "facets":null
  }

Curl Request

curl -XPOST -H "Content-Type: application/json" -u <username>:<password> \
http://localhost:8094/api/index/DemoIndex/query -d '{
  "query": {
    "field": "name",
    "match": "40-Mile Air",
    "fuzziness": 1
  },
  "includeLocations": true
}'

Curl Response

{
  "status":{
    "total":1,
    "failed":0,
    "successful":1
  },
	"request":{
    "query":{
      "match":"40-Mile Air",
      "field":"name",
      "prefix_length":0,
      "fuzziness":0,
      "operator":"or"
    },
    "size":10,
    "from":0,
    "highlight":null,
    "fields":null,
    "facets":null,
    "explain":false,
    "sort":["-_score"],
    "includeLocations":false,
    "search_after":null,
    "search_before":null
  },
	"hits":[
    {
      "index":"DemoIndex_580e3ee6ba3ac900_4c1c5584",
      "id":"airportDoc",
      "score":10.30528795525373,
      "sort":["_score"],
      "fields":{"_$c":"airline"}
    },
    {
      "index":"DemoIndex_580e3ee6ba3ac900_4c1c5584",
      "id":"hotel_16687",
      "score":1.085367329598051,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    }
  ],
	"total_hits":2,
  "max_score":10.30528795525373,
  "took":86844745,
  "facets":null
}

Curl Request

curl -XPOST -H "Content-Type: application/json" -u <username>:<password> \
http://localhost:8094/api/index/DemoIndex/query -d '{
  "query": {
    "field": "name",
    "match": "40-Mile Air",
    "fuzziness": 2
  },
  "includeLocations": true, "analyzer": "standard"
}'

Curl Response

{
  "status":{
    "total":1,
    "failed":0,
    "successful":1
  },
  "request":{
    "query":{
      "match":"40-Mile Air",
      "field":"name",
      "prefix_length":0,
      "fuzziness":2,
      "operator":"or"
    },
    "size":10,
    "from":0,
    "highlight":null,
    "fields":null,
    "facets":null,
    "explain":false,
    "sort":["-_score"],
    "includeLocations":true,
    "search_after":null,
    "search_before":null
  },
  "hits":[
    {
      "index":"DemoIndex_580e3ee6ba3ac900_4c1c5584",
      "id":"hotel_19199",
      "score":0.17049220881184127,
      "locations":{
        "name":{
          "aire":[
            {
              "pos":1,
              "start":0,
              "end":4,
              "array_positions":null
            },
            {
              "pos":5,
              "start":26,
              "end":30,
              "array_positions":null
            }
          ],
          "le":[
            {
              "pos":3,
              "start":15,
              "end":17,
              "array_positions":null
            }
          ]
        }
      },
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_580e3ee6ba3ac900_4c1c5584",
      "id":"airportDoc",
      "score":0.0956994969941305,
      "locations":{
        "name":{
          "40":[
            {
              "pos":1,
              "start":0,
              "end":2,
              "array_positions":null
            }
          ],
          "air":[
            {
              "pos":3,
              "start":8,
              "end":11,
              "array_positions":null
            }
          ],
          "mile":[
            {
              "pos":2,
              "start":3,
              "end":7,
              "array_positions":null
            }
          ]
        }
      },
      "sort":["_score"],
      "fields":{"_$c":"airline"}
    },
    {
      "index":"DemoIndex_580e3ee6ba3ac900_4c1c5584",
      "id":"hotel_21608",
      "score":0.05690871682349641,
      "locations":{
        "name":{
          "le":[
            {
              "pos":2,
              "start":6,
              "end":8,
              "array_positions":null
            }
          ],
          "m":[
            {
              "pos":3,
              "start":9,
              "end":10,
              "array_positions":null
            }
          ]
        }
      },
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_580e3ee6ba3ac900_4c1c5584",
      "id":"hotel_20421",
      "score":0.04286437075446538,
      "locations":{
        "name":{
          "nh":[
            {
              "pos":1,
              "start":0,
              "end":2,
              "array_positions":null
            }
          ],
          "nice":[
            {
              "pos":2,
              "start":3,
              "end":7,
              "array_positions":null
            }
          ]
        }
      },
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_580e3ee6ba3ac900_4c1c5584",
      "id":"hotel_1362",
      "score":0.037911531284201695,
      "locations":{
        "name":{
          "au":[
            {
              "pos":1,
              "start":0,
              "end":2,
              "array_positions":null
            }
          ]
        }
      },
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_580e3ee6ba3ac900_4c1c5584",
      "id":"hotel_21721",
      "score":0.037911531284201695,
      "locations":{
        "name":{
          "iv":[
            {
              "pos":3,
              "start":12,
              "end":14,
              "array_positions":null
            }
          ]
        }
      },
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    }
  ],
  "total_hits":163,
  "max_score":0.17049220881184127,
  "took":610500365,
  "facets":null
}

Prefix Query

The below sample responds with a list of documents in which the name field contains the text that starts with the given prefix. For example, Air.

Curl Request

curl -XPOST -H "Content-Type: application/json" -u <username>:<password> \
http://localhost:8094/api/index/DemoIndex/query -d '{
  "fields" : ["name"],
  "query": {
    "field": "name",
    "prefix": "glasgow"
  }
}'

Curl Response

{
  "status":{
    "total":1,
    "failed":0,
    "successful":1
  },
  "request":{
    "query":{
      "prefix":"glasgow",
      "field":"name"
    },
    "size":10,
    "from":0,
    "highlight":null,
    "fields":["name"],
    "facets":null,
    "explain":false,
    "sort":["-_score"],
    "includeLocations":false,
    "search_after":null,
    "search_before":null
  },
  "hits":[
    {
      "index":"DemoIndex_76059e8b3887351c_4c1c5584",
      "id":"hotel_10138",
      "score":6.026769086106564,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    }
  ],
  "total_hits":1,
  "max_score":6.026769086106564,
  "took":181596318,
  "facets":null
}

Regex Query

The below sample responds with a list of documents in which the name field contains the text in the given form of a regular expression. For example, airport.

Curl Request

curl -XPOST -H "Content-Type: application/json" -u <username>:<password> \
http://localhost:8094/api/index/DemoIndex/query -d '{
"query":{
    "field":"name","regexp":"a[h-i]r[o-p]+ort"}
  }'

Curl Response

{
  "status":{
    "total":1,
    "failed":0,
    "successful":1
  },
  "request":{
    "query":{
      "regexp":"a[h-i]r[o-p]+ort",
      "field":"name"},
      "size":10,
      "from":0,
      "highlight":null,
      "fields":null,
      "facets":null,
      "explain":false,
      "sort":["-_score"],
      "includeLocations":false,
      "search_after":null,
      "search_before":null
    },
  "hits":[
    {
      "index":"DemoIndex_580e3ee6ba3ac900_4c1c5584",
      "id":"hotel_15913",
      "score":5.0166026709347635,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_580e3ee6ba3ac900_4c1c5584",
      "id":"hotel_37887",
      "score":4.486985781600578,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    }
  ],
  "total_hits":2,
  "max_score":5.0166026709347635,
  "took":64912635,
  "facets":null
}

Wildcard Query

The below sample responds with a list of documents in which the country field contains the name that starts with f and ends with ce. For example, france.

Curl Request

curl -XPOST -H "Content-Type: application/json" -u <username>:<password> \
http://localhost:8094/api/index/DemoIndex/query -d '{
  "size":10,
  "from":10,
  "ctl":{"timeout":30},
  "query":{
    "wildcard":"f*ce",
    "field":"country"
  }
}'

Curl Response

{
  "status":{
    "total":1,
    "failed":0,
    "successful":1
  },
  "request":{
    "query":{
      "wildcard":"f*ce",
      "field":"country"
    },
    "size":10,
    "from":10,
    "highlight":null,
    "fields":null,
    "facets":null,
    "explain":false,
    "sort":["-_score"],
    "includeLocations":false,
    "search_after":null,
    "search_before":null
  },
  "hits":[
    {
      "index":"DemoIndex_580e3ee6ba3ac900_4c1c5584",
      "id":"hotel_21850",
      "score":6.175990572936377,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_580e3ee6ba3ac900_4c1c5584",
      "id":"hotel_21872",
      "score":6.175990572936377,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_580e3ee6ba3ac900_4c1c5584",
      "id":"hotel_24536",
      "score":6.175990572936377,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_580e3ee6ba3ac900_4c1c5584",
      "id":"hotel_21837",
      "score":6.175990572936377,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_580e3ee6ba3ac900_4c1c5584",
      "id":"hotel_21725",
      "score":6.175990572936377,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_580e3ee6ba3ac900_4c1c5584",
      "id":"hotel_21846",
      "score":6.175990572936377,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_580e3ee6ba3ac900_4c1c5584",
      "id":"hotel_40662",
      "score":6.175990572936377,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_580e3ee6ba3ac900_4c1c5584",
      "id":"hotel_35857",
      "score":6.175990572936377,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_580e3ee6ba3ac900_4c1c5584",
      "id":"hotel_21855",
      "score":6.175990572936377,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_580e3ee6ba3ac900_4c1c5584",
      "id":"hotel_21669","score":6.175990572936377,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    }
  ],
  "total_hits":141,
  "max_score":6.175990572936377,
  "took":49997068,
  "facets":null
}

Query String Query

The below sample responds with a list of documents in which the name field contains the text that starts with air and the country field contains the name france.

Curl Request

The name field prefixed with air and the country field contains france.

curl -XPOST -H "Content-Type: application/json" -u <username>:<password> \
http://localhost:8094/api/index/DemoIndex/query -d '{
"query": {
  "query": "+name:air* +country:france"
  }
}'

Curl Response

{
  "status":{
    "total":1,
    "failed":0,
    "successful":1
  },
  "request":{
    "query":{
      "query":"+name:air* +country:france"
    },
    "size":10,
    "from":0,
    "highlight":null,
    "fields":null,
    "facets":null,
    "explain":false,
    "sort":["-_score"],
    "includeLocations":false,
    "search_after":null,
    "search_before":null
  },
  "hits":[
    {
      "index":"DemoIndex_580e3ee6ba3ac900_4c1c5584",
      "id":"hotel_19199",
      "score":3.166810600229102,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    }
  ],
  "total_hits":1,
  "max_score":3.166810600229102,
  "took":593704,
  "facets":null
}

Curl Request

The below sample responds with a list of documents in which the name field is prefixed with air, and the country field contains anything other than france.

curl -XPOST -H "Content-Type: application/json" -u <username>:<password> \
http://localhost:8094/api/index/DemoIndex/query -d '{
"query": {
  "query": "+name:air* -country:france"
  }
}'

Curl Response

{
  "status":{
    "total":1,
    "failed":0,
    "successful":1
  },
  "request":{
    "query":{
      "query":"+name:air* -country:france"
    },
    "size":10,
    "from":0,
    "highlight":null,
    "fields":null,
    "facets":null,
    "explain":false,
    "sort":["-_score"],
    "includeLocations":false,
    "search_after":null,
    "search_before":null
  },
  "hits":[
    {
      "index":"DemoIndex_580e3ee6ba3ac900_4c1c5584",
      "id":"airportDoc",
      "score":1.0997886699799067,
      "sort":["_score"],
      "fields":{"_$c":"airline"}
    },
    {
      "index":"DemoIndex_580e3ee6ba3ac900_4c1c5584",
      "id":"hotel_16687",
      "score":1.0997886699799067,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_580e3ee6ba3ac900_4c1c5584",
      "id":"hotel_15913",
      "score":0.9524449440916017,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_580e3ee6ba3ac900_4c1c5584",
      "id":"hotel_37887",
      "score":0.8518926457255296,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    }
  ],
  "total_hits":4,
  "max_score":1.0997886699799067,
  "took":537291,
  "facets":null
}

Boosting the score

The below sample responds with a list of documents in which both the type field and name field contains the term airport but the relevancy of the specified term, for example, airport is more in the name field than the type field.

Curl Request

curl -XPOST -H "Content-Type: application/json" -u <username>:<password> \
http://localhost:8094/api/index/DemoIndex/query -d '{
"query": {
 "disjuncts":[
    {
     "field":"city",
     "match": "glossop",
     "boost":5
    },
    {
      "field":"title",
      "match":"glossop"
    }
  ]
}'

Curl Response

{
  "status":{
    "total":1,
    "failed":0,
    "successful":1
  },
  "request":{
    "query":{
      "disjuncts":[
        {
          "match":"glossop",
          "field":"city",
          "boost":5,
          "prefix_length":0,
          "fuzziness":0,
          "operator":"or"
        },
        {
          "match":"glossop",
          "field":"title",
          "prefix_length":0,
          "fuzziness":0,
          "operator":"or"
        }
      ],
      "min":0
    },
    "size":10,
    "from":0,
    "highlight":null,
    "fields":null,
    "facets":null,
    "explain":false,
    "sort":["-_score"],
    "includeLocations":false,
    "search_after":null,
    "search_before":null
  },
  "hits":[
    {
      "index":"DemoIndex_41b91e3a4134783d_4c1c5584",
      "id":"hotel_10161",
      "score":11.390925020776914,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_41b91e3a4134783d_4c1c5584",
      "id":"hotel_10158",
      "score":11.390925020776914,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_41b91e3a4134783d_4c1c5584",
      "id":"hotel_10160",
      "score":11.390925020776914,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_41b91e3a4134783d_4c1c5584",
      "id":"hotel_10159",
      "score":0.9131614588308529,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    }
  ],
  "total_hits":4,
  "max_score":11.390925020776914,
  "took":339907764,
  "facets":null
}

Conjuncts and Disjuncts

The below sample responds with a list of documents in which the name field contains the text that starts with air and the testing field is not false, and the country field does not contain france.

Curl Request

curl -XPOST -H "Content-Type: application/json" -u <username>:<password> \
http://localhost:8094/api/index/DemoIndex/query -d '{
  "query": {
    "conjuncts": [
      {
        "query": "+name:air*"
      },
      {
        "disjuncts": [
          {"query": "+testing:false"},
          {"query": "country:france"}
        ]
      }
    ]
  }
}'

Curl Response

{
  "status":{
    "total":1,
    "failed":0,
    "successful":1
  },
  "request":{
    "query":{
      "conjuncts":[
        {
          "query":"+name:air*"
        },
        {
          "disjuncts":[
            {
              "query":"+testing:false"
            },
            {
              "query":"country:france"
            }
          ],
          "min":0
        }
      ]
    },
    "size":10,
    "from":0,
    "highlight":null,
    "fields":null,
    "facets":null,
    "explain":false,
    "sort":["-_score"],
    "includeLocations":false,
    "search_after":null,
    "search_before":null
  },
  "hits":[
    {
      "index":"DemoIndex_580e3ee6ba3ac900_4c1c5584",
      "id":"hotel_19199",
      "score":1.8423829850895888,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    }
  ],
  "total_hits":1,
  "max_score":1.8423829850895888,
  "took":81919182,
  "facets":null
}

Boolean Query

Curl Request

curl -XPOST -H "Content-Type: application/json" -u <username>:<password> \
http://localhost:8094/api/index/DemoIndex/query -d '{
  "query" : {
    "must": {
      "conjuncts":[{"field":"type", "match": "hotel"}, {"field":"country", "match": "france"}]
    },
    "must_not": {
      "disjuncts": [{"field":"country", "match": "united states"}]
    },
    "should": {
      "disjuncts": [{"field":"free_parking", "bool": true}]
    }
  }
}'

Curl Response

{
  "status":{
    "total":1,
    "failed":0,
    "successful":1
  },
  "request":{
    "query":{
      "must":{
        "conjuncts":[
          {
            "match":"hotel",
            "field":"type",
            "prefix_length":0,
            "fuzziness":0,
            "operator":"or"
          },
          {
            "match":"france",
            "field":"country",
            "prefix_length":0,
            "fuzziness":0,
            "operator":"or"
          }
        ]
      },
      "should":{
        "disjuncts":[
          {
            "bool":true,
            "field":"free_parking"
          }
        ],
        "min":0
      },
      "must_not":{
        "disjuncts":[
          {
            "match":"united states",
            "field":"country",
            "prefix_length":0,
            "fuzziness":0,
            "operator":"or"
          }
        ],
        "min":0
      }
    },
    "size":10,
    "from":0,
    "highlight":null,
    "fields":null,
    "facets":null,
    "explain":false,
    "sort":["-_score"],
    "includeLocations":false,
    "search_after":null,
    "search_before":null
  },
  "hits":[
    {
      "index":"DemoIndex_76059e8b3887351c_4c1c5584",
      "id":"hotel_21720",
      "score":9.381573976364228,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_76059e8b3887351c_4c1c5584",
      "id":"hotel_21849",
      "score":9.381573976364228,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_76059e8b3887351c_4c1c5584",
      "id":"hotel_20419",
      "score":9.381573976364228,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_76059e8b3887351c_4c1c5584",
      "id":"hotel_21725",
      "score":9.381573976364228,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_76059e8b3887351c_4c1c5584",
      "id":"hotel_20422",
      "score":9.381573976364228,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_76059e8b3887351c_4c1c5584",
      "id":"hotel_21852",
      "score":9.381573976364228,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_76059e8b3887351c_4c1c5584",
      "id":"hotel_21657",
      "score":9.381573976364228,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_76059e8b3887351c_4c1c5584",
      "id":"hotel_21838",
      "score":9.381573976364228,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_76059e8b3887351c_4c1c5584",
      "id":"hotel_21723",
      "score":9.381573976364228,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_76059e8b3887351c_4c1c5584",
      "id":"hotel_1359",
      "score":9.381573976364228,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    }
  ],
  "total_hits":140,
  "max_score":9.381573976364228,
  "took":116599230,
  "facets":null
}

Date Range Query

This example needs an index created on beer-sample bucket.

The below sample responds with a list of documents in which the updateOn field contains the date in between the start date and end date, both inclusive.

Curl Request

curl -XPOST -H "Content-Type: application/json" -u <username>:<password> \
http://localhost:8094/api/index/<beer-sample-index-name>/query -d '{
  "query": {
    "start": "2001-01-01","inclusive_start": true,"end": "2021-08-11","inclusive_end": true,"field": "updated"
  }
}'

Curl Response

{
  "status": {
  "total": 1,
  "failed": 0,
  "successful": 1
  },
  "request": {
  "query": {
      "start": "2001-01-01T00:00:00Z",
      "end": "2021-08-11T00:00:00Z",
      "inclusive_start": true,
      "inclusive_end": true,
      "field": "updated"
  },
  "size": 10,
  "from": 0,
  "highlight": null,
  "fields": null,
  "facets": null,
  "explain": false,
  "sort": ["-_score"],
  "includeLocations": false,
  "search_after": null,
  "search_before": null
  },
  "hits": [
    {
      "index": "bix_3a91439dbf1df8ee_4c1c5584",
      "id": "devil_s_canyon",
      "score": 0.716641821033877,
      "sort": ["_score"]
    },
    {
      "index": "bix_3a91439dbf1df8ee_4c1c5584",
      "id": "abita_brewing_company-strawberry",
      "score": 0.716641821033877,
      "sort": ["_score"]
    },
    ...
    {
      "index": "bix_3a91439dbf1df8ee_4c1c5584",
      "id": "cains-2008_culture_beer",
      "score": 0.716641821033877,
      "sort": ["_score"]
    },
    {
      "index": "bix_3a91439dbf1df8ee_4c1c5584",
      "id": "element_brewing_company-dark_element",
      "score": 0.716641821033877,
      "sort": ["_score"]
    }
  ],
  "total_hits": 7303,
  "max_score": 0.716641821033877,
  "took": 1447295,
  "facets": null
}

Numeric Range Query

The below sample responds with a list of documents in which the id field is between the specified maximum (max) and minimum (min) values.

Curl Request

curl -XPOST -H "Content-Type: application/json" -u <username>:<password> \
http://localhost:8094/api/index/DemoIndex/query -d '{
  "query":{
    "field":"id",
    "max": 8100,
    "min": 8080
  }
}'

Curl Response

{
  "status":{
    "total":1,
    "failed":0,
    "successful":1
  },
  "request":{
    "query":{
      "min":10025,
      "max":10030,
      "field":"id"
    },
    "size":10,
    "from":0,
    "highlight":null,
    "fields":null,
    "facets":null,
    "explain":false,
    "sort":["-_score"],
    "includeLocations":false,
    "search_after":null,
    "search_before":null
  },
  "hits":[
    {
      "index":"DemoIndex_580e3ee6ba3ac900_4c1c5584",
      "id":"hotel_10025",
      "score":0.922656832718857,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_580e3ee6ba3ac900_4c1c5584",
      "id":"hotel_10026",
      "score":0.922656832718857,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    }
  ],
  "total_hits":2,
  "max_score":0.922656832718857,
  "took":62274941,
  "facets":null
}

DOC_ID QUERY

The below sample responds with a list of documents in which the document ID is any of the specified ids. For example, airline_10 and airline_10123.

Curl Request

curl -XPOST -H "Content-Type: application/json" -u <username>:<password> \
http://localhost:8094/api/index/DemoIndex/query -d '{
  "query":{
    "ids":["airline_10", "airline_10123"]
  }
}'

Curl Response

{
  "status":{
    "total":1,
    "failed":0,
    "successful":1
  },
  "request":{
    "query":{
      "ids":["airline_10","airline_10123"]
    },
    "size":10,
    "from":0,
    "highlight":null,
    "fields":null,
    "facets":null,
    "explain":false,
    "sort":["-_score"],
    "includeLocations":false,
    "search_after":null,
    "search_before":null
  },
  "hits":[
    {
      "index":"DemoIndex_580e3ee6ba3ac900_4c1c5584",
      "id":"airline_10",
      "score":1,
      "sort":["_score"],
      "fields":{"_$c":"airline"}
    },
    {
      "index":"DemoIndex_580e3ee6ba3ac900_4c1c5584",
      "id":"airline_10123",
      "score":1,
      "sort":["_score"],
      "fields":{"_$c":"airline"}
    }
  ],
  "total_hits":2,
  "max_score":1,
  "took":139708973,
  "facets":null
}

Bounded Rectangle Query

The below sample responds with a list of documents in which the geolocation (geo) is bounded between the specified top_left and bottom_right.

Curl Request

curl -XPOST -H "Content-Type: application/json" -u <username>:<password> \
http://localhost:8094/api/index/DemoIndex/query -d '{
  "query": {
    "field": "geo",
    "bottom_right": [-66.9326, 24.9493],
    "top_left": [-125.0011, 49.5904]
  }
}'

Curl Response

{
  "status":{
    "total":1,
    "failed":0,
    "successful":1
  },
  "request":{
    "query":{
      "top_left":[-125.0011,49.5904],
      "bottom_right":[-66.9326,24.9493],
      "field":"geo"
    },
    "size":10,
    "from":0,
    "highlight":null,
    "fields":null,
    "facets":null,
    "explain":false,
    "sort":["-_score"],
    "includeLocations":false,
    "search_after":null,
    "search_before":null
  },
  "hits":[
    {
      "index":"DemoIndex_76059e8b3887351c_4c1c5584",
      "id":"hotel_23634",
      "score":0.5583933812203372,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_76059e8b3887351c_4c1c5584",
      "id":"hotel_17932",
      "score":0.5583933812203372,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_76059e8b3887351c_4c1c5584",
      "id":"hotel_25325",
      "score":0.2575082889947619,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_76059e8b3887351c_4c1c5584",
      "id":"hotel_25155",
      "score":0.2575082889947619,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_76059e8b3887351c_4c1c5584",
      "id":"hotel_25263",
      "score":0.2575082889947619,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_76059e8b3887351c_4c1c5584",
      "id":"hotel_3785",
      "score":0.2575082889947619,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_76059e8b3887351c_4c1c5584",
      "id":"hotel_25302",
      "score":0.2575082889947619,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_76059e8b3887351c_4c1c5584",
      "id":"hotel_25195",
      "score":0.2575082889947619,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_76059e8b3887351c_4c1c5584",
      "id":"hotel_25161",
      "score":0.2575082889947619,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_76059e8b3887351c_4c1c5584",
      "id":"hotel_25119",
      "score":0.2575082889947619,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    }
  ],
  "total_hits":361,
  "max_score":0.5583933812203372,
  "took":473390831,
  "facets":null
}

Point Distance Query

The below sample responds with a list of documents in which the location specified as geolocation is in the proximity of the distance specified in distance field. A location is represented by means of longitude-latitude coordinate pairs.

Curl Request

curl -XPOST -H "Content-Type: application/json" -u <username>:<password> \
http://localhost:8094/api/index/DemoIndex/query -d '{
      "from": 0,
      "size": 10,
      "query": {
        "location": {
          "lon": -2.235143,
          "lat": 53.482358
        },
        "distance": "1mi",
        "field": "geo"
      },
      "sort": [
        {
          "by": "geo_distance",
          "field": "geo",
          "unit": "mi",
          "location": {
            "lon": -2.235143,
            "lat": 53.482358
          }
        }
      ]
    }'

Curl Response

{
  "status":{
    "total":1,
    "failed":0,
    "successful":1
  },
  "request":{
    "query":{
      "location":[-2.235143,53.482358],
      "distance":"1mi",
      "field":"geo"
    },
    "size":10,
    "from":0,
    "highlight":null,
    "fields":null,
    "facets":null,
    "explain":false,
    "sort":[
      {
        "by":"geo_distance",
        "field":"geo",
        "location":{
          "lat":53.482358,
          "lon":-2.235143
        },
        "unit":"mi"
      }
    ],
    "includeLocations":false,
    "search_after":null,
    "search_before":null
  },
  "hits":[
    {
      "index":"DemoIndex_41b91e3a4134783d_4c1c5584",
      "id":"hotel_17413",
      "score":1.2317379157866246,
      "sort":[" \u0001?U]S\\.e\u0002_"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_41b91e3a4134783d_4c1c5584",
      "id":"hotel_17414",
      "score":1.2317379157866246,
      "sort":[" \u0001?Z\u0000./\u0007Q\u0012\t"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_41b91e3a4134783d_4c1c5584",
      "id":"hotel_17415",
      "score":1.2317379157866246,
      "sort":[" \u0001?lg6,\u003c\u000cIL"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_41b91e3a4134783d_4c1c5584",
      "id":"hotel_17416",
      "score":1.2317379157866246,
      "sort":[" \u0001?r\u003cw\u0005GZ\u0005\u001f"],
      "fields":{"_$c":"hotel"}
    }
  ],
  "total_hits":4,
  "max_score":1.2317379157866246,
  "took":126456906,
  "facets":null
}

Date Range Facets Query

This example needs an index created on beer-sample bucket.

Curl Request

curl -XPOST -H "Content-Type: application/json" -u <username>:<password> \
http://localhost:8094/api/index/<beer-sample-index-name>/query -d '{
  "query": {
    "field": "style",
    "term": "beer"
  },
  "facets": {
    "types": {
      "size": 10,
      "field": "updated",
      "date_ranges": [
        {
          "name": "old",
          "end": "2011-01-01"
        },
        {
          "name": "new",
          "start": "2011-01-02"
        }
      ]
    }
  }
}'

Curl Response

{
  "status": {
    "total": 1,
    "failed": 0,
    "successful": 1
  },
  "request": {
    "query": {
      "term": "beer",
      "field": "style"
    },
    "size": 10,
    "from": 0,
    "highlight": null,
    "fields": null,
    "facets": {
      "types": {
        "size": 10,
        "field": "updated",
        "date_ranges": [
          {
            "end": "2011-01-01",
            "name": "old",
            "start": "0001-01-01T00:00:00Z"
          },
          {
            "end": "0001-01-01T00:00:00Z",
            "name": "new",
            "start": "2011-01-02"
          }
        ]
      }
    },
    "explain": false,
    "sort": [
      "-_score"
    ],
    "includeLocations": false,
    "search_after": null,
    "search_before": null
  },
  "hits": [
    {
      "index": "bix_3a91439dbf1df8ee_4c1c5584",
      "id": "erie_brewing_company-derailed_black_cherry_ale",
      "score": 3.8396833650222075,
      "sort": ["_score"]
    },
    {
      "index": "bix_3a91439dbf1df8ee_4c1c5584",
      "id": "smuttynose_brewing_co-smuttynose_pumpkin_ale",
      "score": 3.8396833650222075,
      "sort": ["_score"]
    },
    ...
    {
      "index": "bix_3a91439dbf1df8ee_4c1c5584",
      "id": "warwick_valley_wine_co-doc_s_hard_apple_cider",
      "score": 3.8396833650222075,
      "sort": ["_score"]
    }
  ],
  "total_hits": 86,
  "max_score": 3.8396833650222075,
  "took": 155002,
  "facets": {
    "types": {
      "field": "updated",
      "total": 86,
      "missing": 0,
      "other": 0,
      "date_ranges": [
        {
          "name": "old",
          "end": "2011-01-01T00:00:00Z",
          "count": 81
        },
        {
          "name": "new",
          "start": "2011-01-02T00:00:00Z",
          "count": 5
        }
      ]
    }
  }
}

Numeric Range facet

The below sample is to fetch the top 10 hotels based on the ratings given by the customers.

  • Type Mapping ⇒ type:hotel

  • child-field: reviews.ratings.Service

  • Analyzer: standard

Curl Request

curl -XPOST -H "Content-Type: application/json" -u <username>:<password> \
http://localhost:8094/api/index/DemoIndex/query -d '{
  "query": {
    "field": "reviews.content",
    "term": "good"
  },
  "facets": {
    "types": {
      "size": 10,
      "field": "reviews.ratings.Service",
      "numeric_ranges": [
        {
          "name": "Awesome",
          "min": 5
        },
        {
          "name": "Good",
          "max": 4
        },
          {
          "name": "Avg",
          "max": 3
        },
        {
          "name": "Poor",
          "max": 2
        },
        {
          "name": "Bad",
          "max": 1
        }
      ]
    }
  }
}'

Curl Response

{
  "status":{
    "total":1,
    "failed":0,
    "successful":1
  },
  "request":{
    "query":{
      "term":"good",
      "field":"reviews.content"
    },
    "size":10,
    "from":0,
    "highlight":null,
    "fields":null,
    "facets":{
      "types":{
        "size":10,
        "field":"reviews.ratings.Service",
        "numeric_ranges":[
          {
            "name":"Awesome",
            "min":5
          },
          {
            "name":"Good",
            "max":4
          },
          {
            "name":"Avg",
            "max":3
          },
          {
            "name":"Poor",
            "max":2
          },
          {"name":"Bad",
          "max":1
          }
        ]
      }
    },
    "explain":false,
    "sort":["-_score"],
    "includeLocations":false,
    "search_after":null,
    "search_before":null
  },
  "hits":[
    {
      "index":"DemoIndex_41b91e3a4134783d_4c1c5584",
      "id":"hotel_15134",
      "score":1.608775098615459,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_41b91e3a4134783d_4c1c5584",
      "id":"hotel_3491",
      "score":1.5929246603757872,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_41b91e3a4134783d_4c1c5584",
      "id":"hotel_9062",
      "score":1.3135594084905977,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_41b91e3a4134783d_4c1c5584",
      "id":"hotel_25261",
      "score":1.199110122199631,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_41b91e3a4134783d_4c1c5584",
      "id":"hotel_15976",
      "score":1.0384598347067433,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_41b91e3a4134783d_4c1c5584",
      "id":"hotel_26142",
      "score":1.029912757807367,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_41b91e3a4134783d_4c1c5584",
      "id":"hotel_3629",
      "score":0.9683687809619517,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_41b91e3a4134783d_4c1c5584",
      "id":"hotel_5848",
      "score":0.9479798384018671,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_41b91e3a4134783d_4c1c5584",
      "id":"hotel_16443",
      "score":0.9479797868886458,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    },
    {
      "index":"DemoIndex_41b91e3a4134783d_4c1c5584",
      "id":"hotel_2814",
      "score":0.9288267057398083,
      "sort":["_score"],
      "fields":{"_$c":"hotel"}
    }
  ],
  "total_hits":656,
  "max_score":1.608775098615459,
  "took":343585473,
  "facets":{
    "types": {
      "field":"reviews.ratings.Service",
      "total":1871,
      "missing":3,
      "other":0,
      "numeric_ranges":[
        {
          "name":"Good",
          "max":4,"count":658
        },
        {
          "name":"Awesome",
          "min":5,
          "count":579
        },
        {
          "name":"Avg",
          "max":3,
          "count":366
        },
        {
          "name":"Poor",
          "max":2,
          "count":219
        },
        {
          "name":"Bad",
          "max":1,
          "count":49
        }
      ]
    }
  }
}