Использование фильтра рядом с query_string в Elastic Search

Как полнотекстовый поиск и фильтр? Я хочу искать текст среди документов с помощью language_id = 10. Я пробовал это так:

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

но похоже, что это неверно. как его исправить?

Ответ 1

Да, синтаксис отфильтрованного запроса немного громоздкий. AFAIK это должно выглядеть так:

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

Ответ 2

В версии 5.2 отфильтрованный запрос заменяется на запрос bool и возвращает ошибку в моем экземпляре Elastic 5.2. См. здесь.

Новый синтаксис:

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

Ответ 3

Извините Ashalynd, но фильтр не помещен в нужное место в вашем ответе.

Это работает лучше:

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