Elasticsearch Completion Suggester игнорирует параметр индекса и возвращает результаты для нескольких индексов

Я использую PHP-реализацию Elastic, чтобы использовать подсказку завершения, например:

    $params_organisations = [
        'index' => $this->organisation_index,
        'body' => [
            "suggest" => [
                "suggestions" => [
                    'prefix' => $request->q,
                    "completion" => [
                        "field" => "suggest1",
                        "fuzzy" => ["fuzziness" => 0],
                        "skip_duplicates" => "false",
                        "size" => 7
                    ]
                ]
            ]
        ]
    ];

Однако в ответе есть и другие индексы:

suggest: {suggestions: Array(1)}
timed_out: false
took: 8
_shards:
failed: 3
failures: Array(3)
0:
index: ".kibana_1"
node: "xxxxxxxxx"
reason: {type: "illegal_argument_exception", reason: "no mapping found for field [suggest1]"}

Я боюсь, что это может повлиять на производительность, поскольку некоторые другие индексы содержат suggest1, и они ищутся и возвращают результаты. Я не менял имена, и иногда я хочу обрабатывать предлагаемые поля аналогичным образом, но проблематично ли иметь одинаковые имена полей типа подсказки по индексам?

Или есть способ более явно определить индекс? Я также пробовал добавить имя индекса к конечной точке, но результат тот же. Я нашел конечную точку явного предложения в реализации PHP, но кажется, что она устарела? Любая помощь высоко ценится!

1 ответ

Решение

Итак, проблема была не в ElasticSearch, оказалось, что строка индекса, полученная из конфигурации, обрабатывалась некорректно, давая пустую строку, в результате чего Elastic запрашивал все индексы.

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