文档
指南
索引数据

设置索引

我们将通过 Kibana 的开发者工具控制台发出命令。您也可以使用 Postman 或 curl 等 REST 客户端来实现此目的。

首先,我们需要为我们的数据创建一个索引。我们可以通过以下请求简单地做到这一点

PUT /my-example-movies

overview

步骤 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"
    }
  }
}

overview

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 的更多信息,请参阅入门指南。


Apache 2.0 2024 © Joseph McElroy。
需要帮助?加入 Discord