Elasticsearch PHP: неизвестный ключ для VALUE_STRING в [текст]

Я использую Elasticsearch-PHP [6.0]
У меня есть индекс products, где у меня есть название продуктов, реализующих фразу суггестера.

Настройка индекса

{
  "products": {
    "aliases": {},
    "mappings": {
      "surat": {
        "properties": {
          "suggest": {
            "type": "completion",
            "analyzer": "simple",
            "preserve_separators": true,
            "preserve_position_increments": true,
            "max_input_length": 50
          },
          "title": {
            "type": "text",
            "fields": {
              "reverse": {
                "type": "text",
                "analyzer": "reverse"
              },
              "trigram": {
                "type": "text",
                "analyzer": "trigram"
              }
            }
          }
        }
      }
    },
    "settings": {
      "index": {
        "number_of_shards": "5",
        "provided_name": "products",
        "creation_date": "1525244538694",
        "analysis": {
          "filter": {
            "shingle": {
              "max_shingle_size": "3",
              "min_shingle_size": "2",
              "type": "shingle"
            }
          },
          "analyzer": {
            "reverse": {
              "filter": [
                "standard",
                "reverse"
              ],
              "type": "custom",
              "tokenizer": "standard"
            },
            "trigram": {
              "filter": [
                "standard",
                "shingle"
              ],
              "type": "custom",
              "tokenizer": "standard"
            }
          }
        },
        "number_of_replicas": "1",
        "uuid": "ljVUaIOURjqFOyQ0CXZmow",
        "version": {
          "created": "6020499"
        } 
      }
    }
  } 
}  

Параметры запроса

$params = [
    'index' => 'products',
    'body' => [
        "text" => fortune,
        "simple_phrase" => [
            "phrase" => [
                "field" => "title.trigram",
                "size" => 1,
                "direct_generator" => [ 
                    [
                        "field" => "title.trigram",
                        "suggest_mode" => "always"
                    ],
                    [
                        "field" => "title.reverse",
                        "suggest_mode" => "always",
                        "pre_filter" => "reverse",
                        "post_filter" => "reverse"
                    ]
                ]
            ]
        ]
    ]
];  
$response = $client->search($params);

Ошибка

{"error":{"root_cause":[{"type":"parsing_exception","reason":"Unknown key for a VALUE_STRING in [text].","line":1,"col":9}],"type":"parsing_exception","reason":"Unknown key for a VALUE_STRING in [text].","line":1,"col":9},"status":400}  

Спасибо за вашу помощь.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
1 051
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам просто не хватает ключевого слова suggest:

$params = [
    'index' => 'products',
    'body' => [
      "suggest" => [                               <-- add this
        "text" => fortune,
        "simple_phrase" => [
            "phrase" => [
                "field" => "title.trigram",
                "size" => 1,
                "direct_generator" => [ 
                    [
                        "field" => "title.trigram",
                        "suggest_mode" => "always"
                    ],
                    [
                        "field" => "title.reverse",
                        "suggest_mode" => "always",
                        "pre_filter" => "reverse",
                        "post_filter" => "reverse"
                    ]
                ]
            ]
        ]
      ]                                            <-- and this
    ]
];  
$response = $client->search($params);

Это была небольшая ошибка, которую я совершил. спасибо @val за вашу помощь.

user6051114 02.05.2018 13:22

Не беспокойтесь, рад, что помог!

Val 02.05.2018 13:22

Другие вопросы по теме