首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Elasticsearch 8.x中不再支持URL中的type参数

Elasticsearch 8.x中不再支持URL中的type参数

作者头像
友儿
发布2022-09-11 12:59:02
发布2022-09-11 12:59:02
2K0
举报
文章被收录于专栏:友儿友儿
当创建索引的时候你可能会遇到以下错误提示

{"error":{"root_cause":[{"type":"illegal_argument_exception","reason":"The mapping definition cannot be nested under a type [_doc] unless include_type_name is set to true."}],"type":"illegal_argument_exception","reason":"The mapping definition cannot be nested under a type [_doc] unless include_type_name is set to true."},"status":400}

原因是Elasticsearch 8.x中不再支持URL中的type参数,include_type_name参数默认为false。如果需要开启,把include_type_name 设置为支持type参数即可。

在laravel中使用composer require elasticsearch/elasticsearch 扩展实例,下面贴出创建索引代码和配置如下:

代码语言:javascript
复制
<?php
// 得到es客户端对象
        $client = ClientBuilder::create()->setHosts(config('es.host'))->build();
        // 创建索引
        $params = [
            // 生成索引的名称
            'index' => 'fang',
            'include_type_name' => true,//Elasticsearch 8.x中不再支持URL中的type参数
            // 类型 body
            'body' => [
                 //number_of_replicas 是数据备份数,如果只有一台机器,设置为0
                 //number_of_shards  是数据分片数,默认为5,有时候设置为3
                 //可以在线改所有配置的参数,number_of_shards不可以在线改
                'settings' => [
                    // 分区数
                    'number_of_shards' => 5,
                    // 副本数
                    'number_of_replicas' => 1
                ],
                'mappings' => [
                    '_doc' => [
                        '_source' => [
                            'enabled' => true//获取原数据
                        ],
                        // 字段  类似表字段,设置类型
                        'properties' => [
                            'fang_name' => [
                                // 相当于数据查询是的 = 张三你好,必须找到张三你好
                                'type' => 'keyword'
                            ],
                            'fang_desn' => [
                                'type' => 'text',
                                // 中文分词  张三你好   张三  你好 张三你好
                                'analyzer' => 'ik_max_word',
                                'search_analyzer' => 'ik_max_word'
                            ]
                        ]
                    ]
                ]
            ]
        ];
        // 创建索引
        $response = $client->indices()->create($params);

        dump($response);
?>
代码语言:javascript
复制
array:3 [▼
  "acknowledged" => true
  "shards_acknowledged" => true
  "index" => "fang"
]
代码语言:javascript
复制
//添加数据
<?php
 // es数据的添加
        // 得到es客户端对象
        $client = ClientBuilder::create()->setHosts(config('es.host'))->build();
        // 写文档
        $params = [
            'index' => 'fang',
            'type' => '_doc',
            'id' => $model->id,
            'body' => [
                'fang_name' => $model->fang_name,
                'fang_desn' => $model->fang_desn,
            ],
        ];
        // 添加数据到索引文档中
        $client->index($params);
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 当创建索引的时候你可能会遇到以下错误提示
  • 原因是Elasticsearch 8.x中不再支持URL中的type参数,include_type_name参数默认为false。如果需要开启,把include_type_name 设置为支持type参数即可。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档