Rajesh Rajesh - 1 month ago 8
MySQL Question

how can I use this mysql query in elastic search

actually i want those record from my db where description is blank, below the mysql query for my result and what should be query in elasticsearch for same result ?

SELECT * FROM products WHERE description != '';

Answer

Elastic Search query looks like this

POST http://localhost:9200/<index>/<indextype>/_search
{
  "query": {
    "filtered": {
      "filter": {
        "term": {
          "description": ""
        }
      }
    }
  }
}

Still its not working, check your mapping should be like this.

PUT http://localhost:9200/<index>/<indextype>/_mapping
{
  "products": {
    "properties": {
      "description": {
        "type": "string",
        "index": "not_analyzed"
      }
    }
  }
}

If you want the result with description != '' then use below query.

Missing Filter in the Must-Not section of a Bool Filter. It will only return documents where the field exists, and if you set the "null_value" property to true, values that are explicitly not null.

{
  "query": {
    "filtered": {
      "filter": {
        "bool":{
          "must":{},
          "should":{},
          "must_not":{
             "missing":{
                "field":"description",
                "existence":true,
                "null_value":true
                }
            }
        }
      }
    }
  }
}