Проблема запроса Elasticsearch с зарезервированными символами - PullRequest
0 голосов
/ 20 сентября 2018

Я проиндексировал два документа

1) {"title": "+" }

2) {"title": "a + b" }

Используя запрос строки запроса, у меня есть поисковые запросы для вышеупомянутых двухдокументы по-разному.Также я не менял никаких анализаторов.Использован анализатор по умолчанию.

1.

{
  "query": {
    "query_string": {
      "default_field": "title",
      "query": "+"
    }
  }
}

Приведенный выше запрос дает исключение при синтаксическом анализе, которое является допустимым.

2.

{
  "query": {
    "query_string": {
      "default_field": "title",
      "query": "\\+"
    }
  }
}

этот запрос выводит:

"hits": [
  {
    "_index": "my_index1",
    "_type": "my_item",
    "_id": "005",
    "_score": 0.9808292,
    "_source": {
      "title": "+"
    }
  }
]

приведенный выше вывод также кажется допустимым.

3.

{
  "query": {
    "query_string": {
      "default_field": "title",
      "query": " + "
    }
  }
}

в указанном выше пространстве запросов существует до и после "+"символ, это выводит:

"hits": [
  {
    "_index": "my_index1",
    "_type": "my_item",
    "_id": "005",
    "_score": 1.2039728,
    "_source": {
      "title": "+"
    }
  }
]

Моя проблема в том, почему здесь не генерируется исключение синтаксического анализа и почему экранирование "+" здесь не нужно "? Если Elasticsearch находит способ для анализа" + "каким-то образомпочему "a + b" не входит в число попаданий?

4.

{
  "query": {
    "query_string": {
      "default_field": "title",
      "query": "a + b"
    }
  }
}

этот запрос выводит:

"hits": [
  {
    "_index": "my_index1",
    "_type": "my_item",
    "_id": "005",
    "_score": 0.9808292,
    "_source": {
      "title": "+"
    }
  }
]

Я не понимаю, как мойзапрос разбирает «+» и не выдает исключение. Если Elasticsearch каким-то образом находит способ разобрать «+», почему «a + b» не входит в число попаданий? 5.

{
  "query": {
    "query_string": {
      "default_field": "title",
      "query": "a \\+ b"
    }
  }
}

Выведите на этот запрос:

"max_score": 0.6931472,
"hits": [
  {
    "_index": "my_index1",
    "_type": "my_item",
    "_id": "007",
    "_score": 0.6931472,
    "_source": {
      "title": "a + b"
    }
  }
]

, если в запросе используются анализаторы по умолчанию (поскольку я не использовал анализаторы), как здесь "+" в попаданиях?

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