我正在使用https://github.com/babenkoivan/scout-elasticsearch-driver通过Laravel Scout实施Elasticsearch。伊万(Ivan)在Github上提到了这一点:
在Elasticsearch 6.0.0或更高版本中创建的索引只能包含一个映射类型。在5.x中创建的具有多种映射类型的索引将继续像在Elasticsearch 6.x中一样工作。映射类型将在Elasticsearch 7.0.0中完全删除。
如果我在这里了解:https://www.elastic.co/guide/en/elasticsearch/reference/master/removal-of-types.html我要么需要使用:
1)PUT索引?include_type_name = true
或者更好
2) PUT索引/ _doc / 1 { “ foo”:“ baz” }
我被卡住了,因为我不知道如何使用1)或2)
如何添加参数include_type_name = true?
如何在不使用include_type_name参数的情况下创建正确的映射?
class TestIndexConfigurator extends IndexConfigurator
{
use Migratable;
/**
* @var array
*/
protected $settings = [
];
protected $name = 'test';
}
答案 0 :(得分:1)
当我在Kibana控制台中尝试GET product/default/_mapping
时。
我一直收到此错误。
”除非获得映射请求,否则不能提供类型 include_type_name设置为true“
这在弹性搜索7.3.0中发生。 看起来最新版本的弹性搜索不再支持上述命令。
当我从上述命令中删除默认设置时,它对我有用。
GET product/_mapping
答案 1 :(得分:0)
Elasticsearch的早期版本(<= 5)每个索引支持多种类型。这意味着每种类型可能具有不同的数据映射。在Elasticsearch 6中,此功能已删除,您只能使用一种映射类型。
因此,对于Elasticsearch 7(最新版本),您可以添加索引,设置映射并添加文档,如下所示:
创建索引
PUT user
添加映射
PUT user/_mapping
{
"properties": {
"name": {
"type": "keyword"
},
"loginCount": {
"type": "long"
}
}
}
添加文档
PUT user/_doc/1
{
"name": "John",
"loginCount": 4
}
检查索引中的数据
GET user/_search
现在,关于您使用的scout-elasticsearch-driver,在阅读了您提到的文档后,只是说您需要为每个可搜索模型创建单独的索引配置器,因为无法将多个模型存储在同一个索引中
要创建索引,请运行
php artisan make:index-configurator MyIndexConfigurator
然后
php artisan elastic:create-index App\\MyIndexConfigurator
这将为您在elasticsearch中创建索引。
要了解有关Elasticsearch的更多信息,建议您将Elasticsearch和kibana都安装到开发机器上,然后在kibana中使用它-界面非常漂亮,并支持自动完成功能,可以简化学习曲线。