创建 search_value 报错

3. 修复 Bug

为了解决问题,我们需要在 Elasticsearch 的索引中引入一个新的字段 search_value,把属性名和属性值拼接之后存入这个字段,然后在筛选时也将属性名和属性值拼接,并精确匹配 search_value 字段即可。

不加 search_value 之前,没有问题:

创建 search_value 报错

加了之后,报错:

创建 search_value 报错

天尽头流浪
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
leo
最佳答案

出现这个错误是因为在设置 search_value 字段类型之前就已经插入了带有 search_value 字段的数据,ES 会自动帮你创建这个字段,从而导致你想自己设置字段类型的时候被 ES 拒绝。

4年前 评论
讨论数量: 10

@leo 老师,看教程中似乎没有遇到这样的问题,我这里为何出现?请帮忙看下,谢谢

4年前 评论

删除所有索引,从 6.4 重新做,重复好几遍,每次到这里都是这个错误。

4年前 评论
leo

出现这个错误是因为在设置 search_value 字段类型之前就已经插入了带有 search_value 字段的数据,ES 会自动帮你创建这个字段,从而导致你想自己设置字段类型的时候被 ES 拒绝。

4年前 评论

@leo 老师,您的意思就是说,我不需要执行这一步吗

4年前 评论
leo

@d1270469522 当然需要执行了,只不过你需要先找到为什么在我们还没定义字段类型的时候你就插入了数据,大概率是因为你操作的顺序和课程的不一致。

4年前 评论

1、删除索引 curl -XDELETE http://localhost:9200/_all; 2、重新从 6.4 章节开始做; 3、顺序和教程一样; 老师,基于这种情况怎么处理?是不是没有删除干净? 老师,有没有命令查看是否有设置这个字段,然后彻底删除?

4年前 评论
leo

@d1270469522 在执行添加 search_value 命令之前,先查一下索引里是不是有数据

4年前 评论

好的,我再重新弄一下

4年前 评论

@leo 老师,问题已找到,原因不明确。
1、在 6.7 章 创建索引和类型
2、在 6.8 章执行 计划任务 php artisan es:sync-products 就会出现 search_value
自动增加字段,如图:

file

3、我重新删除索引,在进行到 6.7 章 创建索引和类型 时,直接执行 7.3 章 修复BUG 这段代码即可
效果如图:

file

4年前 评论

PUT /products/_mapping/_doc?include_type_name=true 加【include_type_name=true】这个跑可以回避提示错误。 我的Elasticsearch版本是[7.17.20]。 最好安装Kibana这个工具,在这个工具上跑书里的索引设定代码。

10个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!