Запрос Elasticsearch с Must (и) должен (или) не давать желаемых результатов - PullRequest
0 голосов
/ 17 апреля 2020

Я пытаюсь выполнить запрос X И (y ИЛИ z) Мне нужно получить все проданные свойства, чтобы агент был либо агентом по листингу, либо агентом по продаже.

Только с булом Должен ли я получить 9324 результатов. Когда я добавляю bool следует, я получаю тот же набор результатов 9324. Агент с идентификатором 140699 должен иметь только около 100 результатов. Я также пробовал фильтр bool безуспешно. При замене must фильтром, результат будет похож на другой бул, и я получаю результаты только в том случае, если агент был агентом листинга И агентом по продаже

GET /property/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "statusCatID": {
              "value": "Sold"
            }
          }
        },
        {
          "range": {
            "closingDate": {
              "gte": "now-3M"
            }
          }
        }
      ],
      "should": [
        {
          "term": {
            "listAgent1": {
              "value": 140699
            }
          }
        },
        {
          "term": {
            "sellingAgent1": {
              "value": 140699
            }
          }
        }
      ]
    }
  },
  "size": 300
}

1 Ответ

2 голосов
/ 17 апреля 2020

С помощью вашей записи вы выполняете запрос, подобный следующему:

(statuscatid:sold AND closingDate:now-3M OR listAgent1:140699 OR sellingAgent1:140699)

Я предлагаю вам прочитать это официальное сообщение в блоге , чтобы лучше понять запросы bool в elasti c. Если вы хотите запрос, подобный этому:

(statuscatid:sold AND closingDate:now-3M) AND (listAgent1:140699 OR sellingAgent1:140699)

Вы должны написать его следующим образом:

{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "statusCatId": "sold"
          }
        },
        {
          "range": {
            "closingDate": "now-3M"
          }
        },
        {
          "bool": {
            "should": [
              {
                "term": {
                  "listAgent1": 140699
                }
              },
              {
                "term": {
                  "sellingAgent1": 140699
                }
              }
            ]
          }
        }
      ]
    }
  },
  "size": 300
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...