Как сопоставить и использовать анализатор в ElasticSearch Laravel
Я учусь использовать ElasticSearch. Вот мой простой метод индексации записи. Вроде все работает. Но мне не совсем понятно, как тут сделать маппинг и добавить анализатор русского языка? Смотрю примеры, никак понять не получается.
public function create(Request $request) {
$post = new Post;
$post->title = $request->title;
$post->description = $request->description;
$post->save();
$client = ClientBuilder::create()->setHosts(['elasticsearch'])->build();
$params = [
'index' => 'post',
'body' => [
'title' => $request->title,
'description' => $request->description
]
];
$response = $client->index($params);
return redirect()->back();
}
Ответы (1 шт):
Автор решения: IndianCoding
→ Ссылка
Анализатор устанавливается в момент создания индекса. Пример из рабочего проекта:
$this->elasticsearch->indices()->create([
'index' => $models->first()->getSearchIndex(), //название индекса
'body' => [
'settings' => [
'analysis' => [
'filter' => [
'ru_stop' => [
'type' => 'stop',
'stopwords' => '_russian_'
],
'ru_stemmer' => [
'type' => 'stemmer',
'language' => 'russian'
]
],
'analyzer' => [
'default' => [
'char_filter' => [
'html_strip'
],
'tokenizer' => 'standard',
'filter' => [
'lowercase',
'ru_stop',
'ru_stemmer'
]
],
'default2' => [
'char_filter' => [
'html_strip'
],
'tokenizer' => 'whitespace',
'filter' => [
'lowercase',
'ru_stop',
'ru_stemmer'
]
]
]
]
],
]
]);