0

我正在使用https://github.com/basemkhirat/elasticsearch包。

es.php文件中,我有以下索引

'indices' => [
        'media' => [
            'settings' => [
                'number_of_shards' => 2,
                'number_of_replicas' => 2,
                'analysis' => [
                    'filter' => [
                        'custom_english_stemmer' => [
                            'type' => "stemmer",
                            'name' => "english"
                        ],
                        "english_stop" => [
                            'type' => "stop",
                            'stopwords' => "_english_"
                        ]
                    ],
                    "analyzer" => [
                        'custom_lowercase_analyzer' => [
                            // 'type' => 'custom',
                            'tokenizer' => 'standard',
                            'filter' => [
                                'lowercase',
                                'english_stop',
                                "custom_english_stemmer"
                            ]
                        ]
                    ]
                ]
            ],
            'mappings' => [
                'properties' => [
                    'id' => [
                        'type' => 'long',
                        'index' => false,
                        'doc_values' => false,
                    ],
                    'title' => [
                        'type' => 'text',
                        "analyzer" => 'custom_lowercase_analyzer'
                    ]
                ]
            ]
        ]
    ]

现在何时php artisan es:indices:create创建执行设置但映射失败并显示错误消息。

{
  "error": {
    "root_cause": [
      {
        "type": "illegal_argument_exception",
        "reason": "Types cannot be provided in put mapping requests, unless the include_type_name parameter is set to true."
      }
    ],
    "type": "illegal_argument_exception",
    "reason": "Types cannot be provided in put mapping requests, unless the include_type_name parameter is set to true."
  },
  "status": 400
}

在此处输入图像描述

如何解决此问题

4

1 回答 1

1

您在创建索引代码中提供类型,media从索引中删除类型,因为不推荐使用类型,请参阅删除类型以获取更多信息。

请注意,在 Elasticsearch 7.X 中,您仍然可以types通过使用include_type_name参数来做一些解决方法来进行自定义,但这不是首选,因为types将在即将推出的 Elasticsearch 8.X 中完全删除。

为了在您的情况下使用自定义type类似media(默认_doc在您的屏幕截图中提到)创建您的索引,您需要传递include_type_name=true给索引创建、模板和映射 API,如本官方 ES 博客中所述

于 2020-04-28T18:19:12.050 回答