Анализ 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!"
}