当前位置:   article > 正文

使用requests发请求操作Elasticsearch【一】_requests 提交日志到elasticsearch

requests 提交日志到elasticsearch

本文为博主原创,未经授权,严禁转载及使用。
本文链接:https://blog.csdn.net/zyooooxie/article/details/123730279

之前在测试环境查es数据,在用 Kibana;可下半年,因为某些原因 就不能用了。我就想着用代码来搞了。简单分享下。

【实际这篇博客推迟发布N个月】

个人博客:https://blog.csdn.net/zyooooxie

【以下所有内容仅为个人项目经历,如有不同,纯属正常】

Elasticsearch

Elasticsearch是一个开源的分布式搜索和分析引擎,用于存储、搜索和分析大量的数据。它是基于Apache Lucene库构建的,并提供了一个简单的RESTful API,使用户可以轻松地进行数据索引、搜索和分析。

Elasticsearch具有以下特点:

  1. 分布式架构:Elasticsearch可以水平扩展,将数据分布在多个节点上,实现高可用性和性能的提升。

  2. 实时搜索:Elasticsearch支持实时索引和搜索,可以在毫秒级别内返回搜索结果。

  3. 多种查询方式:Elasticsearch提供了丰富的查询语法和功能,包括全文搜索、精确匹配、范围查询等。

  4. 多种数据类型支持:Elasticsearch支持多种数据类型的索引和搜索,包括文本、数字、日期、地理位置等。

  5. 分布式数据存储:Elasticsearch使用分片和副本机制来存储数据,保证数据的可靠性和高可用性。

  6. 实时分析:Elasticsearch提供了强大的聚合功能,可以对数据进行实时的统计和分析。

  7. 可扩展性:Elasticsearch可以与其他工具和框架集成,如Logstash、Kibana等,实现全面的数据处理和可视化。

总之,Elasticsearch是一个功能强大、易于使用和可扩展的搜索和分析引擎,适用于各种应用场景,包括日志分析、电子商务、实时监控等。

Search APIs

https://www.elastic.co/guide/en/elasticsearch/reference/7.17/search.html

"""
@blog: https://blog.csdn.net/zyooooxie
@qq: 153132336
@email: zyooooxie@gmail.com
"""

import random
import time

import requests

from requests_toolbelt.utils import dump

from XXX.common_es import gl_es_auth, gl_es_host_new
from user_log import Log
from XXX.practice_es_2 import es_send_request

gl_fc_room = 'TESTM7eY-sPd4wxA'  # 被拆分成 多个token
gl_No_fc_room = 'TESTDbrMoRzVuuXg'

gl_index = 'ABC-data'
gl_type = '_doc'
gl_url = '/'.join([gl_es_host_new, gl_index, gl_type, '_search'])


# 返回结果中最重要的部分是 hits ,它包含 total 字段来表示匹配到的文档总数,并且一个 hits 数组包含所查询结果的前十个文档。
# 在 hits 数组中每个结果包含文档的 _index 、 _type 、 _id ,加上 _source 字段。这意味着我们可以直接从返回的搜索结果中使用整个文档。


# 在 Elasticsearch 中, 相关性得分 由一个浮点数进行表示,并在搜索结果中通过 _score 参数返回,默认排序是 _score 降序。
# _score ,它衡量了文档与查询的匹配程度。


# 如果不对某一特殊的索引或者类型做限制,就会搜索集群中的所有文档。Elasticsearch 转发搜索请求到每一个主分片或者副本分片,汇集查询出的前10个结果,并且返回给我们。


def test_Search_1():
    """
    query-string search 查询字符串
    :return:
    """
    # https://www.elastic.co/guide/en/elasticsearch/reference/7.17/search-search.html#search-search-api-query-params

    # GET /{index}/{type}/_search?q=XXX
    # 将查询本身赋值给参数 q=

    s1 = {'q': 'seq:5'}  # 返回 seq等于5 的所有文档
    s2 = {'q': '错对123'}  # 返回 包含 错对123 的所有文档(默认 十条)

    # Elasticsearch 接受 from 和 size 参数,size 显示应该返回的结果数量,默认是 10;from 显示应该跳过的初始结果数量,默认是 0
    s3 = {'q': 'text.content:对错123', 'size': 15, 'from': 10}

    s4 = {'q': 'text.content:(456 abc)', 'size': 15}  # 搜索 多个值

    s5 = {'q': 'seq:>99 text.content:错对无所谓'}  # 搜索 多个条件、值大于99

    # 使用 sort 参数 实现 按照字段的值排序
    s6 = {"size": 15, "from": 10, "sort": "seq:desc"}
    s7 = {"size": 15, "from": 10, "sort": "seq"}
    s8 = {"size": 15, "from": 10}

    s9 = {"q": "无所谓ABC", "size": 15, "sort": "seq"}  # 字段将会默认升序排序,而按照 _score 的值进行降序排序。

    Log.info('********')

    search_list = [s6, s7, s8, s9]
    # search_list = [s1, s2]
    # search_list = [s3, s4, s5]

    for s in search_list:
        # Basic认证
        res = requests.get(gl_url, auth=gl_es_auth, params=s)

        Log.info(dump.dump_all(res).decode('utf-8'))
        res.close()

        time.sleep(1)

        Log.error('         本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签