Enterprise:通过 App search 摄入数据

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

 

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

我们可以通过如下的命令来查找到相应的 Elasticsearch 索引:

GET _cat/indices

我们也可以使用 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://www.mfbz.cn/a/41820.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

密码学学习笔记(十二):压缩函数 - Davies–Meyer结构

密码学中压缩函数是指将输入的任意长度消息压缩为固定长度输出的函数。压缩函数以两个特定长度的数据为输入,产生与其中一个输入大小相同的输出。简单来说就是它接受一些较长的数据,输出更短的数据。 压缩函数接收长度为X和Y的两个不同输入,并…

青岛大学_王卓老师【数据结构与算法】Week05_14_队列的顺序表示和实现2_学习笔记

本文是个人学习笔记,素材来自青岛大学王卓老师的教学视频。 一方面用于学习记录与分享, 另一方面是想让更多的人看到这么好的《数据结构与算法》的学习视频。 如有侵权,请留言作删文处理。 课程视频链接: 数据结构与算法基础…

回归预测 | MATLAB实现基于ELM-Adaboost极限学习机结合AdaBoost多输入单输出回归预测

回归预测 | MATLAB实现基于ELM-Adaboost极限学习机结合AdaBoost多输入单输出回归预测 目录 回归预测 | MATLAB实现基于ELM-Adaboost极限学习机结合AdaBoost多输入单输出回归预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现基于ELM-Adaboost极限学…

Java线程相关

线程优先级 在Java线程中,通过一个整型成员变量priority来控制优先级,优先级的范围从1~10,在线程构建的时候可以通过setPriority(int)方法来修改优先级,默认优先级是5,优先级高的线程分配时间片的数量要多于优先级低的…

【基于 GitLab 的 CI/CD 实践】01、GitLab CI/CD 基础概念

目录 一、为什么要做 CI/CD ? 1.1 背景-传统的应用开发发布模式 问题 1.2 持续集成与持续交付 持续集成(CI) 持续交付(CD) 持续部署(CD) 1.3 CI/CD 的价值体现 1.4 推荐常用的 CI/CD 工…

Linux内核结构与特性简介

系统调用接口:位于最上层,实现了一些基本的功能,如read和write等系统调用。这是用户空间程序与内核交互的接口,提供了对内核功能的访问。 内核代码:位于系统调用接口之下,可以看作是独立于体系结构的通用内…

linux之Ubuntu系列(四)用户管理 用户和权限 chmod 超级用户root, R、W、X、T、S 软链接和硬链接 shell

r(Read,读取):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目 录的权限。 w(Write,写入):对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移…

基于单片机快递柜的设计与实现

功能介绍 以51单片机作为主控系统;液晶显示当前信息,最多可存储几十个;按下存储按键液晶显示当前快递柜剩余数量;继电器打开,表示用来放物品;正次按下存储按键将取消存快递,继电器关闭快递柜可用…

Spark编程-使用SparkCore求TopN,Max_Min_Value

简介 使用SparkCore求top5值编程,最大最小值 求订单前五的TOP5值 数据 数据字段如下:orderid,userid,payment,productid 需求如下:从文本文件中读取数据,并计算出前5个payment(订单的付款金额)值 //字段 orderid,userid,payme…

在 3ds Max 中对二战球形炮塔进行建模

推荐: NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 实际上被称为“斯佩里球炮塔”,它被用于二战的B-17和B-24轰炸机。 本教程介绍如何在 3ds Max 中对球形转塔进行建模。建模时,您将使用背景图片作为辅助。首先创建一个低多边形球体。…

视频融合平台EasyCVR登录后通道数据及菜单栏页面显示异常的排查与解决

EasyCVR可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有GB28181、RTSP/Onvif、RTMP等,以及厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等,能对外分发RTSP、RTMP、FLV、HLS、WebRTC等格式的视频流。 有用…

Windows11 C盘瘦身

1.符号链接 将大文件夹移动到其他盘,创建成符号链接 2.修改Android Studio路径设置 1.SDK路径 2.Gradle路径 3.模拟器路径 设置环境变量 ANDROID_SDK_HOME

存量市场下,雅迪的高端化之路举步维艰?

为了让自家的高端产品成功“突围”,雅迪在营销上无所不用其极。 继在央视大楼高调发布后,近日雅迪冠能探索E10完成了力战70吨游艇、无惧24吨雨水冲刷、制霸百公里全地形等极限挑战,“树立起新一代两轮电动车豪华标杆旗舰”。 图源&#xff1…

字节跳动后端面试,笔试部分

var code "7022f444-ded0-477c-9afe-26812ca8e7cb" 背景 笔者在刷B站的时候,看到了一个关于面试的实录,前半段是八股文,后半段是笔试部分,感觉笔试部分的题目还是挺有意思的,特此记录一下。 笔试部分 问…

Jmeter性能测试,通过插件监控服务器资源使用情况

Jmeter作为性能测试的首选工具,那么在性能测试过程中如何方便快捷的监测服务器资源使用情况? 可以通过jmeter 安装"PerfMon(Servers Performance Monitoting)"插件并配合服务端资源监控工具进行实现,详细操作流程如下:…

【微信机器人开发

现在并没有长期免费的微信群机器人,很多都是前期免费试用,后期进行收费,或者核心功能需要付费使用的。 这时如果需要群机器人帮助我们管理群聊,建议大家使有条件的可以自己开发微信管理系统。了解微信群机器人的朋友都知道&#x…

教程 | 如何10秒内一键生成高质量PPT

Hi! 大家好,我是赤辰! 近期新进的学员不少职场小白,对AI工具提效办公很感兴趣,今天火速给大家安排,ChatGPTMindShow强强联合,30秒内快速生成PPT,对于策划小白来说简直是福音呀! 市…

第三方api对接怎么做?淘宝1688api接口怎么对接?

在今天的互联网上,第三方API对接是必不可少的。这种技术将不同的应用程序/服务连接在一起,创造了无限的可能性。 第三方api对接怎么做? 1、与支付公司签约 首先,通过正规的渠道,如支付公司官网或正规服务商&#xf…

Echarts 修改背景颜色、全屏自适应屏幕

修改背景色: 全屏自适应屏幕 首先拿到外面的div的高度 通过DOM获取clientHeight即为无论全屏与否都是DIV的整个高度 在通过高度去做自适应就好了

Redis可视化工具(Redis Desktop Manager)

redis是我们平时开发工作中经常用到的非关系型数据库,常用于做数据缓存,分布式锁等。 为了更方便的使用redi,这里给大家推荐一款可视化工具:Redis Desktop Manager。 1.下载与安装 直接到gihub下载,地址 Release 0.…