Как позволить ES не забивать должен вызвать - PullRequest
0 голосов
/ 29 апреля 2019

Я просто использую ES, чтобы отфильтровать некоторые данные, вообще не нужна функция оценки.но есть некоторая логика or, которую я должен включить.я знаю, что мы можем заменить must на filter, поэтому ES не оценит его и может его кэшировать.Как профилировать should вызвать?

если эти два запроса разные?

{
  "query": {
    "bool": {
      "filter": [
        {
          "bool": {
            "should": [
              {
                "term": {
                  "closeStatus": 0
                }
              },
              {
                "bool": {
                  "must_not": {
                    "exists": {
                      "field": "closeStatus"
------------------------------------------------
{
  "query": {
    "bool": {
      "should": [
        {
          "term": {
            "closeStatus": 0
          }
        },
        {
          "bool": {
            "must_not": {
              "exists": {
                "field": "closeStatus"

1 Ответ

1 голос
/ 29 апреля 2019

Если вам не важен счет, используйте constant_score query:

{
  "query": {
    "constant_score": {
      "filter": {
        "bool": {
          "should": [
            {
              "term": {
                "closeStatus": 0
              }
            },
            {
              "bool": {
                "must_not": {
                  "exists": {"field": "closeStatus"}
                }
              }
            }
          ]
        }
      }
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...