Elasticsearch (es) 官方文档后期会移除 type 属性,scout 如何适应这个操作呢?
根据社区的elasticsearch文档(主要是笑来搜跟Elasticsearch 的配置与使用,为了全文搜索...),以及scout的文档,首先artisan创建了个初始化的问题由于不太了解直接copy了笑来搜的动态设置属性的代码如下
'mappings' => [
'_default_' => [
'_all' => [
'enabled' => true
],
'dynamic_templates' => [
[
'strings' => [
'match_mapping_type' => 'string',
'mapping' => [
'type' => 'text',
'analyzer' => 'ik_smart',
'ignore_above' => 256,
'fields' => [
'keyword' => [
'type' => 'keyword'
]
]
]
]
]
]
]
]
这样的话 很多都是ik分析了,想对指定的字段设置不使用ik
问题2
就是我要对多个model生成es数据,根据scout里面的配置,发现只有首个模型才能导入到index里面,后面的模型数据导入不了
关于 LearnKu
@Jourdon
第一个问题
创建索引时可以设置,看注释
第2个问题没有遇到过,所以不太清楚什么情况,检查下是配置问题还是代码的错误。
@Jourdon 这种情况不同的model有不同的字段,如果定义了个title的话 如果第二个model没有这个字段 是不是也不冲突?
eg:
@Mr_lan 一看你就没仔细看文章,,创建索引那一段,
重点的地方
如果有多个表,那就在下面加类型名
不管你是用laravel scout ,还是用其它的composer包,,如果底层是Elasticsearch,都是可以实现这些的功能,
另外建议你找一下别人封装好的composer包,使用起来方便,
@Jourdon 你说的这个是原始的吧, 如果用scout的话 他的index是在model里面用
这个动态设置的,如果用原始的话 在创建index的时候确实不存在疑问,可是构建一个Eloquent的自动修改es的暂时驾驭不来,只能用观察者模式在对应的model都写一遍增删改,这样的代码量会比较大
@Jourdon 说错了 index是配置里面固定一个 type才是上面那个方法动态设置
@Mr_lan 可能我理解错了你的意思,laravel scout 我并没有使用过,但是看了下文档,scout并不涉及到type,我理解的是,在导入生成索引时使用
php artisan scout:import "App\Post",每个模型都会根据model生成对应的索引那在查询数据时,使用哪个Model,就会直接从相应的索引中查数据,
在更新数据的时候scout会更新数据到对应的索引中,这个应该不用手动去更新。
@Jourdon 测试了下 发现貌似是不能同时支持多个model的 就scout目前测试 只能对一个model取到效果, 我是这样测试的
//post表:
//article表:
//最终结果是 我先执行哪一个导入(php artisan scout:import "App\Post")那么对应的就能够生产,后续的导入不能够生效
有时间去研究下吧,应该不会有这种BUG吧?
@Zoee 快来看 快来瞧