Как добавить и / или как часть строки для запроса? - PullRequest
0 голосов
/ 15 мая 2019

Некоторые из моих ключевых слов содержат и / или .Строковый запрос, который я сделал, прерывается при использовании этих данных.Мои строковые запросы должны иметь возможность обрабатывать эти данные в своих запросах

Вот мой запрос и ошибка:

Запрос:

POST /test/_doc
{
  "keyword":"pizza oven and/or pizza"
}

GET /test/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "query_string": {
            "default_field": "keywords.english",
            "query": "(pizza oven and/or pizza) OR (bread)"
          }
       }
      ]
    }
  }
}

Ошибка:

  {
    "shard": 0,
    "index": "test",
    "node": "V3XGiCPAS0ej2PmYuk12qw",
    "reason": {
      "type": "query_shard_exception",
      "reason": "Failed to parse query [(pizza oven and/or pizza) OR (bread)]",
      "index_uuid": "OXSS-p_DTqeddnFkSjwWOw",
      "index": "test",
      "caused_by": {
        "type": "parse_exception",
        "reason": "parse_exception: Cannot parse '(pizza oven and/or pizza) OR (bread)': Lexical error at line 1, column 37.  Encountered: <EOF> after : \"/or pizza) OR (bread)\"",
        "caused_by": {
          "type": "token_mgr_error",
          "reason": "token_mgr_error: Lexical error at line 1, column 37.  Encountered: <EOF> after : \"/or pizza) OR (bread)\""
        }
      }
    }
  }

Как я могу сделать так, чтобы и / или не прерывали строковый запрос?

1 Ответ

0 голосов
/ 15 мая 2019

/ является зарезервированным символом в языке запросов строки запроса, вам необходимо его экранировать:

        "query": "(pizza oven and\/or pizza) OR (bread)"
                                 ^
                                 |
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...