Использование фильтра рядом с 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
}
}
}
}
}