ElasticSearch bool запрос с помоем, как этого добиться? - PullRequest
0 голосов
/ 16 мая 2018

У меня есть запрос, в котором мне нужно найти N слов, и документ также должен соответствовать строке регулярного выражения.У меня это работает, но у меня также есть требование, чтобы термины были в пределах 3 слов друг от друга, в Elastic syntax slop: 3.Проблема в том, что в запросе bool не допускается откат.

{
  "from": 0,
  "size": 100,
  "explain": true,
  "_source": {
    "includes": [
      "*"
    ],
    "excludes": [
      "doctext"
    ]
  },
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "doctext": {
              "query": "value1 value2"
            }
          }
        },
        {
          "regexp": {
            "doctext": {
              "value": "[0-9]{3}"
            }
          }
        }
      ]
    }
  }
}

Кто-нибудь знает другой способ достижения того же результата?

1 Ответ

0 голосов
/ 17 мая 2018

Замените запрос match на match_phrase и добавьте к нему slop, например

{
  "from": 0,
  "size": 100,
  "explain": true,
  "_source": {
    "excludes": [
      "doctext"
    ]
  },
  "query": {
    "bool": {
      "must": [
        {
          "match_phrase": {
            "doctext": {
              "query": "value1 value2",
              "slop": 3
            }
          }
        },
        {
          "regexp": {
            "doctext": {
              "value": "[0-9]{3}"
            }
          }
        }
      ]
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...