Я следовал этой статье для соединения laravel и ElasticSearch:
https://madewithlove.be/how-to-integrate-your-laravel-app-with-elasticsearch/
У меня есть таблица в базе данных MySQL, в которой есть поле дерева: "title", "description" и "price". "title" и "description - это строковый тип. поэтому я пишу ниже код для поиска, и это работало правильно:
private function searchOnElasticsearch(string $query): array
{
$instance = new Article;
$items = $this->search->search([
'index' => $instance->getSearchIndex(),
'type' => $instance->getSearchType(),
'body' => [
'query' => [
'multi_match' => [
'fields' => ['title', 'description'],
'query' => $query,
],
],
],
]);
return $items;
}
Но теперь мне нужно проверить поле "цена", которое имеет тип bigInt , как два других поля: 'fields' => ['title', 'description','price'],
UPDATE
Когда я добавляю "price" в поле, я получаю эту ошибку в laravel:
{ "ошибка": { "ROOT_CAUSE": [{ "типа": "query_shard_exception", "причина": "не удалось
создать запрос: {\ n \ "multi_match \": {\ n \ "query \": \ "bad \", \ n
\ "fields \": [\ n \ "description ^ 1.0 \", \ n \ "price ^ 1.0 \", \ n
\ "tags ^ 1.0 \", \ n \ "title ^ 1.0 \" \ n], \ n \ "type \": \ "best_fields \", \ n
\ "operator \": \ "OR \", \ n \ "slop \": 0, \ n \ "prefix_length \": 0, \ n
\ "max_expansions \": 50, \ n \ "zero_terms_query \": \ "NONE \", \ n
\ "auto_generate_synonyms_phrase_query \": true, \ n
\ "fuzzy_transpositions \": true, \ n \ "boost \": 1.0 \ n
} \ П} " "index_uuid": "mm787GxMS4WjjjqwRD5YIw", "Индекс": "товары"}], "типа": "search_phase_execution_exception", "причина":" все
осколки
не удалось», "фазы": "запрос", "сгруппированы": правда, "failed_shards": [{ "осколок": 0, "Индекс": "товары", "узел": "JYWiIdbLQtu3aWkm_F-e9Q", "причина" : { "типа": "query_shard_exception", "причина": "не удалось
создать запрос: {\ n \ "multi_match \": {\ n \ "query \": \ "bad \", \ n
\ "fields \": [\ n \ "description ^ 1.0 \", \ n \ "price ^ 1.0 \", \ n
\ "tags ^ 1.0 \", \ n \ "title ^ 1.0 \" \ n], \ n \ "type \": \ "best_fields \", \ n
\ "operator \": \ "OR \", \ n \ "slop \": 0, \ n \ "prefix_length \": 0, \ n
\ "max_expansions \": 50, \ n \ "zero_terms_query \": \ "NONE \", \ n
\ "auto_generate_synonyms_phrase_query \": true, \ n
\ "fuzzy_transpositions \": true, \ n \ "boost \": 1.0 \ n
} \ П} " "index_uuid": "mm787GxMS4WjjjqwRD5YIw", "Индекс": "товары", "caused_by": { "Тип": "number_format_exception", "причина":" Для
входная строка: \ "bad \" "}}}]}," status ": 400}