Три условия в запросе - PullRequest
       5

Три условия в запросе

0 голосов
/ 03 сентября 2018

Вот рабочий запрос:

{
  "query": {
    "bool":
    { "must_not":{"exists":{"field":"ParentId"}},
      "should":[
        {"query_string":{"default_field":"Name","query":"*es*"}}
      ]
    }
  }
}

Я получаю документы с ParentId=null и Name, содержащими подстроку es.

Мне нужно добавить еще один фильтр условий по подстроке другого поля:

{
  "query": {
    "bool":
    { "must_not":{"exists":{"field":"ParentId"}},
      "should":[
        {"query_string":{"default_field":"Name","query":"*ewr*"}},
        {"wildcard":{"OrganizationPath":{"wildcard":"1_6_32*"}}}
      ]
    }
  }
}

Теперь фильтр по Name перестает работать.

Еще одна попытка с тем же результатом:

{
  "query": {
    "bool":
    { "must_not":{"exists":{"field":"ParentId"}},
      "should":[
        {"query_string":{"default_field":"Name","query":"*ewr*"}},
        {"query_string":{"default_field":"OrganizationPath", "query": "1_6_32*"}}
      ]
    }
  }
}

Почему и как я могу это исправить?

1 Ответ

0 голосов
/ 03 сентября 2018

, если вы хотите, чтобы все ваши ограничения соответствовали, вам нужно заменить should на filter

{
  "query": {
    "bool":
    { "must_not":{"exists":{"field":"ParentId"}},
      "filter":[
        {"query_string":{"default_field":"Name","query":"*ewr*"}},
        {"query_string":{"default_field":"OrganizationPath", "query": "1_6_32*"}}
      ]
    }
  }
}

Обратите внимание, что если вам нужна оценка, вы можете использовать must вместо filter, в противном случае filter прекрасно работает для ваших нужд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...