设置索引
我们将通过 Kibana 的开发者工具控制台发出命令。您也可以使用 Postman 或 curl 等 REST 客户端来实现此目的。
首先,我们需要为我们的数据创建一个索引。我们可以通过以下请求简单地做到这一点
PUT /my-example-movies
步骤 2:设置电影索引
接下来,我们需要设置索引字段,以便我们能够导入数据。
索引的映射取决于您要索引的数据和所需的功能。
当您索引数据时,Elasticsearch 会自动检测字段的数据类型并为其创建映射。但是,您也可以显式定义索引的映射。当您希望在索引任何数据之前定义映射,或希望更改现有索引的映射时,这很有用。
示例
可搜索字段
我们希望能够搜索标题。我们只需要一个类型为文本的字段。
{
"properties": {
"title": {
"type": "text"
}
}
}
可搜索和可过滤字段
我们希望能够搜索和对作者字段进行分面。我们需要两个不同类型的字段:关键字和文本。
{
"properties": {
"writers": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword"
}
}
}
}
}
分面的数值字段
我们希望能够对年份字段进行分面和过滤。我们需要一个类型为整数的字段。可以是其他数值类型,请参阅数值类型文档 (在新标签页中打开)
{
"properties": {
"year": {
"type": "integer" // can also be other numerical types like long, short, byte, double, float
}
}
}
分面的日期字段
我们希望能够对日期字段进行分面和过滤。我们需要一个类型为日期的字段。
{
"properties": {
"released": {
"type": "date"
}
}
}
对于我们的电影数据集,我们将使用以下字段
- 标题(可搜索)
- 剧情(可搜索)
- 类型(可搜索,可分面)
- 演员(可搜索,可分面)
- 导演(可搜索,可分面)
- 上映日期(可过滤)
- IMDb 评分(可过滤)
- 网址
映射文件如下所示,我们将再次使用 Kibana 的开发者工具控制台更新索引的映射文件。
PUT /my-example-movies/_mapping
{
"properties": {
"title": {
"type": "text"
},
"plot": {
"type": "text"
},
"genre": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword"
}
}
},
"actors": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword"
}
}
},
"directors": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword"
}
}
},
"released": {
"type": "date"
},
"imdbRating": {
"type": "float"
},
"url": {
"type": "keyword"
}
}
}
Elasticsearch 将在响应中确认请求。
步骤 3:索引电影数据
现在,我们的索引和映射文件已创建,我们已准备好索引一些数据!我们将使用批量 API 来索引我们的数据。
我们将使用以下请求。在此示例中,我们将索引数据集中第一部电影,以验证数据字段是否已正确索引。
PUT /my-example-movies/_bulk
{ "index": {}}
{"title": "The Godfather", "released": "1972-03-23T23:00:00.000Z","genre": ["Crime", "Drama"],"directors": ["Francis Ford Coppola"],"actors": ["Marlon Brando", "Al Pacino", "James Caan", "Richard S. Castellano"],"plot": "The aging patriarch of an organized crime dynasty transfers control of his clandestine empire to his reluctant son.","imdbRating": "9.2", "url": "https://www.imdb.com/title/tt0068646/"}
您的 Elasticsearch 实例现在已准备好与 Searchkit 一起使用。有关如何使用 Searchkit 的更多信息,请参阅入门指南。