OpenSearch插入数据

VPC模式Domain的登录

如果是Internet模式的,登录比较简单,创建完成直接访问Dashboard URL就可以。如果是VPC模式,需要使用代理。

在同VPC的EC2上(这里是cloud 9)安装nginx:

sudo yum install nginx -y

然后编辑/etc/nginx/nginx.conf加入以下配置:

server {
    listen 8080;

    server_name _;  # EC2 instance's public DNS or IP

    location / {
        proxy_pass https://vpc-opensearch-test-gbqcd2ty3522hq35e2kvkdgfje.us-west-2.es.amazonaws.com;  # OpenSearch VPC endpoint
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

启动ngnix:

sudo service nginx start

访问EC2 public URL + _dashboards:

image-20240616153116450

注意后面一定要加上_dashboards, 不然加载不了Dashboard页面

登录成功后的页面:

image-20240616154133371

插入数据到OpenSearch

单击右上角的 开发工具

image-20240616154357369

开发工具界面直接向 OpenSearch 发出 API 查询, 使用 查询 DSL

从开发工具界面, 将执行以下 API 操作:

  • 创建一个索引 my-movie-index
  • 使用 bulk API 将数据插入到索引中

创建索引

首先, 创建将导入数据的索引。复制下面的文本, 并将其粘贴到开发工具输入窗口中, 然后运行

PUT /my-movie-index
{
  "settings": {
    "index": {
      "number_of_shards": 3
      "number_of_replicas": 1
    }
  }
}

这将创建一个名为 my-movie-index的索引, 其中有 3 个shard和 1 个replica。

  • 一个 index 由一个或多个 shard 组成。在查询索引时, OpenSearch 实际上会在组成该索引的所有分片上执行搜索。

  • replicashard的副本。每个shard可能包含 0 个或多个replica。


验证索引创建

和之前一样, 复制下面的文本, 并将其粘贴到开发工具输入窗口中P:

GET /my-movie-index 

image-20240616154952223


使用Bulk insert插入数据

现在要通过 OpenSearch 的 bulk API 将数据插入到其中, 将使用一个包含 1,499 部电影的数据集。

下载并打开以下文件:

wget https://pingfan.s3.amazonaws.com/files/imdb-data-for-indexing.txt

文件的第一行是将发送到 OpenSearch 的 API 操作。在本例中, 是一个 POST请求到 _bulk API :

POST /_bulk

_bulk API 是将大量数据引入 OpenSearch 的最有效方式。

文件的其余部分由 NDJSON (换行分隔的 JSON)组成。OpenSearch 将读取第一行, 以确定要将数据写入哪个索引(在本例中是 my-movie-index 索引), 而下一行将被视为有效负载。这将重复执行,直到请求中发送的所有行都处理完毕。

将整个数据文件(1499 条记录)复制并粘贴到开发控制台中, 选择全部并单击 ‘Run’ 图标:

恭喜! 现在有一个充满电影数据的索引, 可以进行搜索!