Demodemon 2019-07-29 12:13 采纳率: 0%
浏览 703

按逗号分割Elasticsearch中value并且用分离后的值进行查询,返回结果到Kibana中,如何实现?

###ElasticSearch中的数据是这样的
数据1:{"tag":"@improve,@ignro,@dependency"}

数据2:{"tag":"@improve,@ignro,@dependency"}

数据3:{"tag":"@improve}

数据4:{"tag":"@ignro,@dependency"}

想要在kibana中的到这样的结果:

①得到返回结果中有哪些tag

@improve,@ignro,@dependency

②这些tag的比例是多少

如果上4条数据全部返回,比例应该是:

@improve 3/4=75%

@ignro 3/4=75%

@dependency 3/4=75%

请大佬帮忙解答

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-10 20:45
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    要使用Elasticsearch和Kibana来实现这个需求,你需要按照以下步骤操作:

    1. 首先确保你已经安装了Elasticsearch和Kibana。如果没有,请从Elasticsearch的官方网站下载并安装。

    2. 创建一个索引,并在其中添加一些文档。例如:

    curl -XPUT "http://localhost:9200/improvement" -d '{
        "settings": {
            "number_of_shards": 1,
            "number_of_replicas": 0
        },
        "mappings": {
            "properties": {
                "tags": {
                    "type": "text"
                }
            }
        }
    }'
    

    然后添加一些文档如下:

    {
        "_index": "improvement",
        "_type": "",
        "_id": "1",
        "tags": "@improve,@ignro,@dependency"
    },
    {
        "_index": "improvement",
        "_type": "",
        "_id": "2",
        "tags": "@improve,@ignro,@dependency"
    },
    {
        "_index": "improvement",
        "_type": "",
        "_id": "3",
        "tags": "@improve"
    },
    {
        "_index": "improvement",
        "_type": "",
        "_id": "4",
        "tags": "@ignro,@dependency"
    }
    
    1. 在Kibana中配置搜索和分析。首先打开Kibana,然后点击左侧菜单的“新建”按钮,选择“Kibana” -> “Kibana模板”。在弹出的窗口中输入你的索引名(这里是“improvement”),然后点击“创建”。

    2. 现在你可以开始使用Elasticsearch和Kibana来获取所需的结果。首先,你需要设置索引。这可以通过执行以下命令完成:

    curl -XPOST http://localhost:9200/improvement/_search?pretty
    

    这将返回所有索引的信息,包括每个索引的名称、类型和ID等信息。在这个例子中,我们只关心的是索引的名字和类型,所以我们可以忽略其他部分。

    接下来,我们需要对索引进行分词。这可以通过执行以下命令完成:

    curl -XGET http://localhost:9200/improvement/_analyze?pretty
    

    这将返回每个文档的所有标签的分词结果。为了查看分词结果,可以将输出重定向到文件。例如:

    curl -sS http://localhost:9200/improvement/_analyze | grep -o '\b\w+\b' > tags.txt
    

    这将在tags.txt文件中列出所有的标签。

    现在,我们可以使用Python库elasticsearch来解析这个文本文件,并计算每个标签的出现频率。这是一个简单的示例:

    import re
    from elasticsearch import Elasticsearch
    
    es = Elasticsearch()
    
    with open('tags.txt', 'r') as f:
        lines = f.readlines()
        for line in lines:
            words = re.findall(r'\w+', line)
            es.indices.refresh(index='improvement')
            result = es.search(index='improvement', body={
                'query': {
                    'match_all': {}
                },
                'aggs': {
                    'tags': {
                        'terms': {
                            'field': 'tags',
                            'size': 10
                        }
                    }
                }
            })
            print(result['aggregations']['tags']['buckets'])
    

    这段代码会返回每个标签的前10个出现次数。你可以根据需要调整这个数字,以获得所需的精度。

    最后一步是在Kibana中可视化这些结果。你可以使用以下命令来显示索引:

    kibana -f kibana.yml --server=http://localhost:5601
    

    这将启动Kibana并将它连接到你的索引。现在你可以看到每个标签的出现次数以及它们各自的百分比。

    这样,你就完成了从Elasticsearch获取数据到Kibana的可视化过程。

    评论

报告相同问题?

悬赏问题

  • ¥15 obsidian的中文层级自动编号
  • ¥15 同一个网口一个电脑连接有网,另一个电脑连接没网
  • ¥15 神经网络模型一直不能上GPU
  • ¥15 pyqt怎么把滑块和输入框相互绑定,求解决!
  • ¥20 wpf datagrid单元闪烁效果失灵
  • ¥15 券商软件上市公司信息获取问题
  • ¥100 ensp启动设备蓝屏,代码clock_watchdog_timeout
  • ¥15 Android studio AVD启动不了
  • ¥15 陆空双模式无人机怎么做
  • ¥15 想咨询点问题,与算法转换,负荷预测,数字孪生有关