prefixQuery in Elasti c поиск не работает - PullRequest
2 голосов
/ 13 апреля 2020
{
  "from": 0,
  "size": 100,
  "timeout": "10m",
  "query": {
    "bool": {
      "must": [
        {
          "bool": {
            "must": [
              {
                "bool": {
                  "filter": [
                    {
                      "bool": {
                        "must": [
                          {
                            "term": {
                              "input.custom_attrs.index": {
                                "value": "1",
                                "boost": 1
                              }
                            }
                          }
                        ]
                      }
                    },
                    {
                      "bool": {
                        "must": [
                          {
                            "prefix": {
                              "input.custom_attrs.value": {
                                "value": "An*",
                                "boost": 1
                              }
                            }
                          }
                        ]
                      }
                    }
                  ]
                }
              }
            ]
          }
        }
      ]
    }
  }
}

Объяснение - Я хочу найти поле с префиксом "An". Также я уверен, что есть данные со значениями «Годовой» и «Годовой фонд», которые должны появляться во всех поисках совпадений. Но эти записи не отображаются с префиксным запросом, как указано выше. Я пробовал также с запросом регулярного выражения и запросом с подстановочными знаками. Но они также не работают. Пожалуйста, дайте ваши ценные советы, как заставить запрос работать.

1 Ответ

1 голос
/ 13 апреля 2020

Возможные причины, по которым он не работает

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

В то время как запросы префиксов не анализируются , а поисковый термин не go через какой-либо анализатор и не будет в нижнем регистре.

В вашем случае вы ищете An, капитал примечания A, в то время как для Annual и Annual fund токены будут annual и annual и fund, следовательно, они не совпадают.

Решение :

Пожалуйста, используйте an в качестве префиксного запроса, и вы должны получить результаты поиска.

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