Я проиндексировал два документа
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"
}
}
]
, если в запросе используются анализаторы по умолчанию (поскольку я не использовал анализаторы), как здесь "+" в попаданиях?