ehsan shirzadi
ehsan shirzadi

Reputation: 4859

Using filter beside query_string in Elastic Search

How to full text search and have filter? I want to search for a text among documents with language_id=10. I've tried it this way:

{
  "query": {
    "query_string": {
      "query": "Declared"
    },
    {
      "filtered": {
        "filter": {
          "term": {
            "language_id": 10
          }
        }
      }
    }
  }
}

but seems like it's not correct. How to correct it?

Upvotes: 14

Views: 14079

Answers (3)

snw
snw

Reputation: 303

In version 5.2, filtered query is replaced by the bool query, and returns error on my Elastic 5.2 instance. See here.

The new syntax is:

{
   "query":{
      "bool":{
         "must":{
            "query_string":{
               "query":"Declared"
            }
         },
         "filter":{
            "term":{
               "language_id":10
            }
         }
      }
   }
}

Upvotes: 15

Ashalynd
Ashalynd

Reputation: 12563

Yep, the syntax of the filtered query is a bit cumbersome. AFAIK it should look like that:

{
   "query":{
      "filtered":{
         "query":{
            "query_string":{
               "query":"Declared"
            }
         },
         "filter":{
            "term":{
               "language_id":10
            }
         }
      }
   }
}

Upvotes: 14

Kévin
Kévin

Reputation: 81

Sorry Ashalynd but the filter is not placed a the right place in your answer.

This is working better:

{
   "query":{
      "filtered":{
         "query":{
            "query_string":{
               "query":"Declared"
            }
         },
         "filter":{
            "term":{
               "language_id":10
            }
         }
      }
   }
}

Upvotes: 4

Related Questions