Исключение недопустимого аргумента при использовании подсказок в Elasticsearch в PHP - PullRequest
5 голосов
/ 31 мая 2019

Я попытался реализовать запрос подсказки завершения в php, как указано здесь .Мой код:

$params = [
            "index" => $myIndex,
            "body" => [
                "try" => [
                    "text" => "ram",
                    "completion" => [ "value" => "suggest"]
                ]
            ]
        ];

        $response = $client->suggest($params);

Я выполнил индексирование следующим образом:

$params = [
        "index" => $myIndex,
            "body" => [
            "settings"=> [
            "analysis"=> [
                "analyzer"=> [
                "start_with_analyzer"=> [
                    "tokenizer"=> "my_edge_ngram",
                    "filter"=> [
                    "lowercase"
                    ]
                ]
                ],
                "tokenizer"=> [
                "my_edge_ngram"=> [
                    "type"=> "edge_ngram",
                    "min_gram"=> 3,
                    "max_gram"=> 15
                ]
                ]
            ]
            ],
            "mappings"=> [
            "doc"=> [
                "properties"=> [
                "label"=> [
                    "type"=> "text",
                    "fields"=> [
                    "keyword"=> [
                        "type"=> "keyword"
                    ],
                    "ngramed"=> [
                        "type"=> "text",
                        "analyzer"=> "start_with_analyzer"
                    ]
                    ]
                ]
                ]
            ]
            ]
    ]
    ];
    $response = $client->indices()->create($params);    // create an index

, и я получаю следующую ошибку:

{
    "error": {
        "root_cause": [
            {
                "type": "illegal_argument_exception",
                "reason": "[completion] unknown field [value], parser not found"
            }
        ],
        "type": "illegal_argument_exception",
        "reason": "[completion] unknown field [value], parser not found"
    },
    "status": 400
} 

Я попытался изменитьvalue до value.keyword, но отображается та же ошибка.Я использую упругий поиск 5.3.2.Как устранить эту ошибку?

1 Ответ

0 голосов
/ 31 мая 2019

В запросе вы используете поле 'value' внутри завершения, пока оно не является таким полем, то есть точной ошибкой.

Вы можете попробовать следующее решение:

    $params = [
                "index" => $myIndex,
                "body" => [
                    "try" => [
                        "text" => "ram",
                        "completion" => [ "label" => "suggest"]
                    ]
                ]
            ];
   $response = $client->suggest($params);

Надеюсь, это сработает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...