Строка запроса с аномальным поведением - PullRequest
0 голосов
/ 28 октября 2019

Я пытаюсь понять предложение query_string вasticsearch. В частности, мне нужно понять следующее поведение. После я поставил следующий документ.

PUT test/doc/1
{
  "name": "1RD.ISABELA.GRADOS"
}

Я ожидаю, что у следующих двух запросов будет один документ. Но только последний запрос возвращает 1 документ. У меня вопрос, почему первый запрос ничего не возвращает? Не могли бы вы мне помочь, пожалуйста?

GET test/_search 
{
  "query": {
    "bool": {
      "must": [
        {
          "query_string": {
            "query": "1RD.ISABELA",
            "default_field": "*"
          }
        }
      ]
     }
    }
 }


GET test/_search 
    {
      "query": {
        "bool": {
          "must": [
            {
              "query_string": {
                "query": "1RD.ISABELA.GRADOS",
                "default_field": "*"
              }
            }
          ]
         }
        }
     }

1 Ответ

0 голосов
/ 28 октября 2019

Если вы выполните запрос ниже

GET index28/_analyze
{
  "text": "1RD.ISABELA.GRADOS",
  "analyzer": "standard"
}

Ответ:

"tokens" : [
    {
      "token" : "1rd.isabela.grados",
      "start_offset" : 0,
      "end_offset" : 18,
      "type" : "<ALPHANUM>",
      "position" : 0
    }
  ]

Для всего текста сгенерирован один токен. По умолчанию используется токенайзер с именем standard. Он разбивает текст по пробелам, а также удаляет большинство символов, таких как запятые, точки, точки с запятой и т. Д.

Так что только 1rd.isabela.grados будет соответствовать этому токену.

Если вы выполните нижезапрос

GET index28/_analyze
{
  "text": "RD ISABELA GRADOS.",
  "analyzer": "standard"
}

Ответ

"tokens" : [
    {
      "token" : "rd",
      "start_offset" : 0,
      "end_offset" : 2,
      "type" : "<ALPHANUM>",
      "position" : 0
    },
    {
      "token" : "isabela",
      "start_offset" : 3,
      "end_offset" : 10,
      "type" : "<ALPHANUM>",
      "position" : 1
    },
    {
      "token" : "grados",
      "start_offset" : 11,
      "end_offset" : 17,
      "type" : "<ALPHANUM>",
      "position" : 2
    }
  ]

Сгенерировано 3 токена. Поэтому поиск по любому из этих токенов вернет документы

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