Elasticsearch - возвращать документы, только если присутствуют все указанные условия - PullRequest
0 голосов
/ 19 февраля 2020

Предположим, у меня есть поле с именем message. Это поле будет содержать предложение. Также у меня есть множество терминов. Этот массив будет содержать несколько слов. Что-то вроде

"query": {
                "bool": {
                  "must": [
                    {
                      "terms": {
                        "message": [
                          "domain",
                          "rejected"
                        ],
                        "boost": 1
                      }
                    }
                  ]
                }

Предположим, я хочу вернуть только те документы, где domain и rejected, оба должны присутствовать независимо от их порядка в предложении. Каким должен быть запрос?

1 Ответ

0 голосов
/ 19 февраля 2020

Вы должны иметь возможность использовать запрос intervals для достижения того, что вам нужно, например:

{
  "query": {
    "intervals": {
      "message": {
        "match": {
          "query": "domain rejected",
          "max_gaps": -1,
          "ordered": false
        }
      }
    }
  }
}

В сущности, этот запрос говорит:

в поле message найдите термины domain и rejected без определенного порядка и без особой близости

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