在弹性搜索中使用query_string旁边的过滤器

ehs*_*adi 13 full-text-search filter elasticsearch

如何全文搜索并有过滤?我想在language_id = 10的文档中搜索文本.我试过这种方式:

{
  "query": {
    "query_string": {
      "query": "Declared"
    },
    {
      "filtered": {
        "filter": {
          "term": {
            "language_id": 10
          }
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

但似乎不正确.怎么纠正呢?

Ash*_*ynd 14

是的,过滤后的查询的语法有点麻烦.AFAIK看起来应该是这样的:

{
   "query":{
      "filtered":{
         "query":{
            "query_string":{
               "query":"Declared"
            }
         },
         "filter":{
            "term":{
               "language_id":10
            }
         }
      }
   }
}
Run Code Online (Sandbox Code Playgroud)


snw*_*snw 11

在5.2版中,过滤的查询被bool查询替换,并在我的Elastic 5.2实例上返回错误.看到这里.

新语法是:

{
   "query":{
      "bool":{
         "must":{
            "query_string":{
               "query":"Declared"
            }
         },
         "filter":{
            "term":{
               "language_id":10
            }
         }
      }
   }
}
Run Code Online (Sandbox Code Playgroud)