首页 > 编程语言 >Kibana:使用 Devtools console 把请求变成 Python 或 Nodejs 的代码

Kibana:使用 Devtools console 把请求变成 Python 或 Nodejs 的代码

时间:2024-11-17 19:17:10浏览次数:3  
标签:index console version Nodejs Python twitter client Elasticsearch id

特别指出,这个最新的 Elastic Stack 8.16 发布版的功能。我很兴奋地来尝试这个功能。在今天的文章中,我们来使用一个例子来进行详细地描述。

安装

如果你还没有安装好自己的 Elasticsearch 及 Kibana,请参考如下的文章来进行安装:

你在选择安装的时候,请选择 8.x 的文档来进行安装。特别指出的是,你需要安装 Elastic Stack 8.16,因为只有这个版本才开始有这个功能。在安装的时候,我们也可以启动 SSL 安全访问。

展示

我们启动 Kibana,并进入到 DevTools console 中:

如上所示,我们打入如上的命令/请求:

PUT twitter/_doc/1
{
  "content": "This is Xiaoguo from Elasetic"
}

上面的命令被用来写入一个文档到 twitter 索引之中。我们接下来使用如下的操作:

我们选择 Python,并拷贝代码:

import os
from elasticsearch import Elasticsearch

client = Elasticsearch(
    hosts=["https://192.168.101.107:9200"],
    api_key=os.getenv("ELASTIC_API_KEY"),
)

resp = client.index(
    index="twitter",
    id="1",
    document={
        "content": "This is Xiaoguo from Elasetic"
    },
)
print(resp)

上面就是我们用来生成 twitter 索引,并写入文档到 Elasticsearch 中的代码。

细心的开发者可以发现,如果我们使用这个代码,并对没有安全设置的 Elasticsearch 安装来说是没有任何问题的。如果你的安装已经启用了 HTTPS 安全访问那么,我们该如何进行修改呢?

我们首先参考我之前写的文章 “Elasticsearch:关于在 Python 中使用 Elasticsearch 你需要知道的一切 - 8.x”。我们需要对代码进行修改。

拷贝 Elasticsearch 证书

我们执行如下的命令把 Elasticsearch 的证书拷贝到当前的目录中:

$ pwd
/Users/liuxg/python/console
$ cp ~/elastic/elasticsearch-8.16.0/config/certs/http_ca.crt .
$ ls
http_ca.crt

创建 API key

我们可以按照如下的步骤来获取 API key:

我们拷贝上面的 key 并在下面的代码中进行使用。

创建 Python 代码并修改

我们在当前的目录下创建 main.py 文件,并把之前拷贝的代码粘贴进去。我们需要做相应的修改:

main.py

import os
from elasticsearch import Elasticsearch

 
client = Elasticsearch(
    hosts=["https://192.168.101.107:9200"],
    api_key="eGhLNk41TUJ2NGtlT1d0R3R6Z3I6LWp0ckxuY0xSU09jaDAwVHNISmZUZw==",
    ca_certs="./http_ca.crt",
    verify_certs = True
)

print(client.info())

resp = client.index(
    index="twitter",
    id="2",
    document={
        "content": "This is Xiaoguo from Elasetic"
    },
)

print(resp)

为了测试的方便,我们使用了不同的文档 id (2) 来进行测试。我们运行上面的脚本:

$ pwd
/Users/liuxg/python/console
$ ls
http_ca.crt main.py
$ python3 main.py 
{'name': 'liuxgm.local', 'cluster_name': 'elasticsearch', 'cluster_uuid': 'HF3DAYNQSnOq0D1NmsNubg', 'version': {'number': '8.16.0', 'build_flavor': 'default', 'build_type': 'tar', 'build_hash': '12ff76a92922609df4aba61a368e7adf65589749', 'build_date': '2024-11-08T10:05:56.292914697Z', 'build_snapshot': False, 'lucene_version': '9.12.0', 'minimum_wire_compatibility_version': '7.17.0', 'minimum_index_compatibility_version': '7.0.0'}, 'tagline': 'You Know, for Search'}
{'_index': 'twitter', '_id': '2', '_version': 1, 'result': 'created', '_shards': {'total': 2, 'successful': 1, 'failed': 0}, '_seq_no': 1, '_primary_term': 1}

上面显示我们的代码已经成功地运行了。

我们使用 Kibana 来查看我们已经写入的文档:

从上面的输出中,我们可以看出来,我们已经成功地写入了一个 id 为 2 的文档。

按照同样的方法,我们下面来使用 bulk 请求来写入一个 id 为 3 的文档。我们得到的代码是:

import os
from elasticsearch import Elasticsearch

client = Elasticsearch(
    hosts=["https://192.168.101.107:9200"],
    api_key=os.getenv("ELASTIC_API_KEY"),
)

resp = client.bulk(
    operations=[
        {
            "index": {
                "_index": "twitter",
                "_id": "3"
            }
        },
        {
            "content": "this is from bulk"
        }
    ],
)
print(resp)

我们把上面的代码写入到之前的 main.py 中:

main.py

import os
from elasticsearch import Elasticsearch

 
client = Elasticsearch(
    hosts=["https://192.168.101.107:9200"],
    api_key="eGhLNk41TUJ2NGtlT1d0R3R6Z3I6LWp0ckxuY0xSU09jaDAwVHNISmZUZw==",
    ca_certs="./http_ca.crt",
    verify_certs = True
)

print(client.info())

resp = client.index(
    index="twitter",
    # id="2",
    document={
        "content": "This is Xiaoguo from Elastic"
    },
)

print(resp)

resp = client.bulk(
    operations=[
        {
            "index": {
                "_index": "twitter",
                "_id": "3"
            }
        },
        {
            "content": "this is from bulk"
        }
    ],
)

print(resp)

请注意,这次我们写入文档时,我们在第一个写入中没有指定 id 这个字段(避免写入同样 id 2 造成的问题)。运行上面的代码:

$ pwd
/Users/liuxg/python/console
$ ls
http_ca.crt main.py
$ python3 main.py 
{'name': 'liuxgm.local', 'cluster_name': 'elasticsearch', 'cluster_uuid': 'HF3DAYNQSnOq0D1NmsNubg', 'version': {'number': '8.16.0', 'build_flavor': 'default', 'build_type': 'tar', 'build_hash': '12ff76a92922609df4aba61a368e7adf65589749', 'build_date': '2024-11-08T10:05:56.292914697Z', 'build_snapshot': False, 'lucene_version': '9.12.0', 'minimum_wire_compatibility_version': '7.17.0', 'minimum_index_compatibility_version': '7.0.0'}, 'tagline': 'You Know, for Search'}
{'_index': 'twitter', '_id': 'yBLFN5MBv4keOWtGQDiG', '_version': 1, 'result': 'created', '_shards': {'total': 2, 'successful': 1, 'failed': 0}, '_seq_no': 2, '_primary_term': 1}
{'errors': False, 'took': 0, 'items': [{'index': {'_index': 'twitter', '_id': '3', '_version': 1, 'result': 'created', '_shards': {'total': 2, 'successful': 1, 'failed': 0}, '_seq_no': 3, '_primary_term': 1, 'status': 201}}]}

我们使用 Kibana 进行查看:

我们看见两个最新写入的文档。

我们可以使用同样的方法来针对 Nodejs 进行操作。这个留给你们自己进行尝试。针对 Nodejs 的 Elasticsearch 连接,你可以参考文章 “Elasticsearch:使用最新的 Nodejs client 8.x 来创建索引并搜索”。

标签:index,console,version,Nodejs,Python,twitter,client,Elasticsearch,id
From: https://blog.csdn.net/UbuntuTouch/article/details/143827441

相关文章

  • Python学习从0到1 day28 Python 高阶技巧 ⑥ Socket服务端开发
    我们终将上岸,阳光万里                        ——24.11.13一、Socketsocket(简称套接字)是进程之间通信一个工具,好比现实生活中的插座,所有的家用电器要想工作都是基于插座进行。进程之间想要进行网络通信需要socket。Socket负责进程之间的网......
  • Python 潮流周刊#77:Python 依赖管理就像垃圾场火灾?(摘要)
    本周刊由Python猫出品,精心筛选国内外的250+信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进Python技术,并增长职业和副业的收入。分享了12篇文章,12个开源项目,2则热门讨论,全文2200字。以下是本期摘要:......
  • 【Python图解】跟着图片,带你入门Python
    【图解Python】跟着图片流程,带你入门PythonPython安装及基本语法Python是一种上手简单、功能丰富的编程语言,广泛用于数据科学领域。它允许用户快速解决问题,而不必深陷复杂的语法和编程细节。在全球数据科学家和研究人员享受Python带来的便利的同时,也有人在开发强大的数据......
  • 【视频讲解】Python深度神经网络DNNs-K-Means(K-均值)聚类方法在MNIST等数据可视化对比
    全文链接:https://tecdat.cn/?p=38289原文出处:拓端数据部落公众号分析师:CucuSun近年来,由于诸如自动编码器等深度神经网络(DNN)的高表示能力,深度聚类方法发展迅速。其核心思想是表示学习和聚类可以相互促进:好的表示会带来好的聚类效果,而好的聚类为表示学习提供良好的监督信号。关......
  • 【华为OD技术面试手撕真题】84、前 K 个高频元素 | 手撕真题+思路参考+代码解析(C & C+
    文章目录一、题目......
  • python学习笔记1
    *args:不定长参数,特点:可以接受[0.+无穷大)的实参print(*values,sep='',end='\n',file=sys.stdout,flush=False)values:会将实参转换成字符串,再输出sep:输出多个对象时用什么间隔,默认为一个空格字符,若要改变其他方式间隔,则需要关键词参数。end:用什么结尾,默认为换行‘\n’......
  • Python+Flask实现搜索引擎,万能搜索框
    万能框指同时支持股票、基金、新闻搜索和命令查询等。下面按新闻、股票、基金检索顺序介绍。一、新闻搜索引擎主要技术当你用Python+Selenium下载新闻之后,如何下载参考上篇博文,就会面临新闻搜索的问题。自己做一个搜索引擎的优点很明显,没有广告,节省时间,如图的比较:搜索......
  • python岭迹图绘制函数
    一.岭迹图是什么?    岭迹图(RidgeTracePlot)是一种可视化工具,用于展示岭回归中正则化参数($\alpha$)对回归系数的影响。它能帮助我们理解特征的稳定性和正则化在控制模型复杂度中的作用。二.什么时候需要看岭迹图?存在共线性特征时当特征间高度相关,普通最小二乘法(OLS)......
  • python爬虫爬取网页中文乱码问题的解决
    一:遇到的问题1.代码点击查看代码importrequestsifname=='main':#指定URLurl='https://xxxxxx'#发送请求1.page_text=requests.get(url,headers=headers).text#打印print(page_text)2.返回的网页内容点击查看代码#省略的代码第ä¸å·宴æ¡......
  • Excel 与 Python 的强强联合:开启数据分析与处理的新大门 
     在数据处理和分析的世界里,Excel一直是大家耳熟能详、应用广泛的工具,凭借其直观的界面和丰富的函数,能够轻松应对许多基础的数据操作。而Python呢,作为一门功能强大、灵活多变的编程语言,在数据科学领域更是有着无可替代的地位。当Excel遇上Python,它们就如同默契的搭档,能......