Enterprise:通过 App search 摄入数据

news/2024/7/5 7:20:52

App Search 是 Elastic Enterprise Search 的一部分,Elastic Enterprise Search 是由 Elasticsearch 提供支持的内容搜索工具集合。

最初由 App Search 引入的一些功能(例如网络爬虫)现在可以直接通过企业搜索使用。 将这些功能与其他企业搜索工具(例如连接器和搜索 UI 库)相结合。

在今天的文章中,我来详述如何为 App search 写入数据。如果你想把数据库里的数据写入到 App search 中,你可以参考我之前的文章 “Enterprise:如何使用 Python 客户端将数据提取到 App Search 中”。

安装

首先,我们按照文章 “Enterprise:使用 MySQL connector 同步 MySQL 数据到 Elasticsearch” 里所介绍的方法来安装 Elastic Enterprise App search。这里就不再累述了。

准备数据

我们可以在网上链接 TMDB movies and series | Kaggle 下载到 TMDB 的数据。它含有 526,000 个电影及超过 93,000 个 TV 连续剧。我们点击网页上的 Download 按钮:

我们可以使用如下的命令来进行加压缩:

$ pwd
/Users/liuxg/data/movies_tmdb
$ ls
archive.zip 
$ unzip archive.zip 

我们打开 Kibana 界面:

在上面,我们选择 App Search managed docs。

如上所示,目前它提供了三种方法来摄入文件。有关 Crawler 的文章,在我之前的有很多文章都已经做过介绍:

  • Enterprise:Web Crawler 基础 (一)(二) 
  • ChatGPT 和 Elasticsearch:OpenAI 遇见私有数据(二)

在这里,我们就不做介绍了。如果你对这个话题感兴趣,请详细阅读上面的文章以了解更多。

在上面,我们选择 Paste or upload JSON

我们接下来选择刚才解压其中的一个文档:

 

我们可以看到已经有一个文档被摄入。

 

点击上面的 Documents,我们可以查看被摄入的文档:

 

 

在默认的情况下,所有的字段的类型都是设置为 text 类型。这显然不是我们所期望的。我们可以通过上面的界面来修改字段的数据类型:

我们根据数据所代表的意思来选择合适的类型。通常我选择一个文档来摄入,并调整所有字段的数据类型。否则我们在摄入所有的文档后再进行调整,那么将会比较耗时一些。等我们把数据里各个字段的类型定义好以后,这就完成了我们的 Schema 定义。点击上面的 Save changes

 

我们接下来可以摄入更多的其它文档。

我们也可以使用 Python 代码来摄入文档。我们先下载如下位置的源码:

git clone https://github.com/liu-xiao-guo/tutorials

我们进入到 app-search 目录下,我们可以看到 app_search_ingest.py 文件:

app_search_ingest.py

from elastic_enterprise_search import AppSearch
import glob, os
import json

app_search = AppSearch(
    "app_search_api_endpoint",
    http_auth="api_private_key"
)

response = []

print("Uploading movies to App Search...")

os.chdir("movies_directory")
for file in glob.glob("*.json"):
  with open(file, 'r') as json_file:
    try:
      response = app_search.index_documents(engine_name="movies",documents=json.load(json_file))
      print(".", end='', flush=True)
    except:
      print("Fail!")
      print(response)
      break

如上所示,我们需要获得 http_auth 里的 private key。我们可以通过如下的方式来获得:

根据我的情况,我修改上面的代码为:

from elastic_enterprise_search import AppSearch
import glob, os
import json

app_search = AppSearch(
    "http://localhost:3002",
    http_auth="private-49cx4j3qe4pv35n4xxy4b4z7"
)

response = []

print("Uploading movies to App Search...")

os.chdir("/Users/liuxg/data/movies_tmdb/movies/movies")
for file in glob.glob("*.json"):
  with open(file, 'r') as json_file:
    try:
      response = app_search.index_documents(engine_name="movies",documents=json.load(json_file))
      print(".", end='', flush=True)
    except:
      print("Fail!")
      print(response)
      break

我们接下来运行上面的代码:

pip install elastic_enterprise_search

 

我们可以在 Kibana 界面看到新摄入的文档:

在代码的根目录下,我们还可以看到一个 app_search_query.py 的文件。我根据自己的配置,修改如下:

app_search_query.py

import requests

api_endpoint = 'http://localhost:3002' + '/api/as/v1/engines/movies/search'
api_key = 'private-49cx4j3qe4pv35n4xxy4b4z7'

headers = {q'Content-Type': 'application/json',
           'Authorization': 'Bearer {0}'.format(api_key)}
query = {'query': 'family'}

response = requests.post(api_endpoint, headers=headers, json=query)
print(response.text)

我们运行代码如下:

我们看到有很多的输出。 


http://lihuaxi.xjx100.cn/news/1359566.html

相关文章

SpringBoot项目中MVC使用--【SB系列之010】

SpringBoot系列文章目录 SpringBoot 的项目编译即报错处理–SB系列之001 —第一部的其它章节可以通过001链接 SpringBoot项目中WEB页面放哪里–【SB系列之008】SpringBoot项目中WEB与Controller的联系–【SB系列之009】SpringBoot项目中MVC使用–【SB系列之010】 文章目录 Sp…

Pthreads程序实现任务队列

主线程启动用户指定数量的线程,这些线程进入条件等待状态。 主线程生成一些任务(一定计算量),每生成一个新的任务,就用条件变量唤醒一个线程,当这个唤醒线程执行完任务时,回到条件等待状态。 当…

RocketMQ环境搭建

环境搭建 环境准备 下载地址: https://downloads.apache.org/rocketmq/4.9.5/安装 上传至服务器 mkdir /usr/soft #上传至此目录/usr/softmkdir /usr/soft 解压 cd /usr/soft unzip rocketmq-all-4.9.5-bin-release.zip移动 mkdir /usr/local/rocketmq cd /usr/soft mv r…

瀚高数据库安全版V4.5流复制安装手册(Linux)

目录 瀚高数据库安全版V4.5流复制安装手册(Linux) 1. 软件安装 2. 主节点配置 2.1修改参数并创建复制槽 3. 备节点配置 瀚高数据库安全版V4.5流复制安装手册(Linux) 1. 软件安装 (1)【数据库软件安装…

Linux软件包管理工具APT

目录 前言 1、更新软件包列表 2、升级已安装的软件包 3、安装软件包 4、删除软件包 5、列出已安装的软件包 6、显示软件包信息 7、搜索软件包 8、清理无用的软件包 前言 Linux系统中,常用的软件包管理工具之一是apt(Advanced Package Tool&…

5 | Pandas日期操作教程

文章目录 Pandas日期操作教程1. 导入 Pandas 和准备数据2. 将日期作为索引3. 重采样和时间窗口重采样时间窗口4. 日期偏移5. 时间差计算6. `dt`属性提取日期时间的各个组成部分计算时间差Pandas日期操作教程 在数据分析和数据科学的领域中,经常会遇到时间序列数据。Pandas是P…

java仿拼多多+免费商城搭建+免费小程序商城搭建+手机商城免费搭建+限时秒杀+积分商城

1. 涉及平台 平台管理、商家端(PC端、手机端)、买家平台(H5/公众号、小程序、APP端(IOS/Android)、微服务平台(业务服务) 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、Redis 3. 前端框…

MySQL 导入 SQL 时报错,1067 – Invalid default value for ‘字段名

链接:(144条消息) MySQL 导入 SQL 时报错,1067 – Invalid default value for ‘字段名’。_花落十里不如你的博客-CSDN博客