Анализ API не работает для Elasticsearch 1.7

Мы работаем с Elasticsearch 1.7 (планируем обновить очень скоро), и я пытаюсь использовать API Analyze, чтобы понять, что делают разные анализаторы, но результат, представленный программой Flexiblesearch, не тот, который я ожидаю.

Если я выполню следующий запрос к нашему экземпляру эластичного поиска

GET _analyze
{
  "analyzer": "stop", 
  "text": "Extremely good food! We had the happiest waiter and the crowd's always flowing!"
}

Я получу этот результат

{
   "tokens": [
  {
     "token": "analyzer",
     "start_offset": 6,
     "end_offset": 14,
     "type": "<ALPHANUM>",
     "position": 1
  },
  {
     "token": "stop",
     "start_offset": 18,
     "end_offset": 22,
     "type": "<ALPHANUM>",
     "position": 2
  },
  {
     "token": "text",
     "start_offset": 30,
     "end_offset": 34,
     "type": "<ALPHANUM>",
     "position": 3
  },
  {
     "token": "extremely",
     "start_offset": 38,
     "end_offset": 47,
     "type": "<ALPHANUM>",
     "position": 4
  },
  {
     "token": "good",
     "start_offset": 48,
     "end_offset": 52,
     "type": "<ALPHANUM>",
     "position": 5
  },
  {
     "token": "food",
     "start_offset": 53,
     "end_offset": 57,
     "type": "<ALPHANUM>",
     "position": 6
  },
  {
     "token": "we",
     "start_offset": 59,
     "end_offset": 61,
     "type": "<ALPHANUM>",
     "position": 7
  },
  {
     "token": "had",
     "start_offset": 62,
     "end_offset": 65,
     "type": "<ALPHANUM>",
     "position": 8
  },
  {
     "token": "the",
     "start_offset": 66,
     "end_offset": 69,
     "type": "<ALPHANUM>",
     "position": 9
  },
  {
     "token": "happiest",
     "start_offset": 70,
     "end_offset": 78,
     "type": "<ALPHANUM>",
     "position": 10
  },
  {
     "token": "waiter",
     "start_offset": 79,
     "end_offset": 85,
     "type": "<ALPHANUM>",
     "position": 11
  },
  {
     "token": "and",
     "start_offset": 86,
     "end_offset": 89,
     "type": "<ALPHANUM>",
     "position": 12
  },
  {
     "token": "the",
     "start_offset": 90,
     "end_offset": 93,
     "type": "<ALPHANUM>",
     "position": 13
  },
  {
     "token": "crowd's",
     "start_offset": 94,
     "end_offset": 101,
     "type": "<ALPHANUM>",
     "position": 14
  },
  {
     "token": "always",
     "start_offset": 102,
     "end_offset": 108,
     "type": "<ALPHANUM>",
     "position": 15
  },
  {
     "token": "flowing",
     "start_offset": 109,
     "end_offset": 116,
     "type": "<ALPHANUM>",
     "position": 16
  }
   ]
}

что не имеет смысла для меня. Я использую анализатор остановки, почему слова "и" и "the" в результате? Я попытался изменить анализатор остановки на пробел и стандарт, но получаю тот же результат, что и выше. Там нет никакой разницы между ними. Тем не менее, если я выполню точно такой же запрос для экземпляра Elasticsearch 5.x, результат больше не будет содержать "и" и "the", и это будет гораздо больше, чем ожидалось.

Это потому, что мы используем 1,7 или что-то в нашей настройке Elasticsearch вызывает эту проблему?

редактировать: я использую плагин Sense в Chrome для выполнения моих запросов, и плагин не поддерживает GET с телом запроса, поэтому он изменяет запрос на POST. Elastic Analyze API 1.7, похоже, не поддерживает запросы POST:(Если я изменю запрос следующим образом: GET _analyze? Analyzer=stop&text=THIS+is+a+test и довольно хорошо работает

1 ответ

Решение

В 1.x синтаксис отличается от 2.x и 5.x. Согласно документации1.x, вы должны использовать _analyze API, как это:

GET _analyze?analyzer=stop
{
  "text": "Extremely good food! We had the happiest waiter and the crowd's always flowing!"
}
Другие вопросы по тегам