数据分析agent(九):es_client_manager.py 和分词器ik_max_word问题

python 复制代码
import asyncio
import random
from typing import Optional

from elasticsearch import AsyncElasticsearch




class ESClientManager:
    def __init__(self):

        self.client:Optional[AsyncElasticsearch]=None

        pass


    def _get_url(self):

        return f"http://127.0.0.1:9200"
        pass


    def init(self):

        self.client=AsyncElasticsearch(hosts=self._get_url())

        pass



    async  def close(self):
        if self.client:
            await self.client.close()
        pass


es_client_manager=ESClientManager()



if __name__ == '__main__':
    es_client_manager.init()
    client=es_client_manager.client

    index_name="product"

    # async def test_index():
    #     result=await client.indices.exists(index=index_name)
    #
    #     print(result)
    #
    #     await es_client_manager.close()
    #
    #
    #
    # asyncio.run(test_index())

    async def test_create():
        result = await client.indices.exists(index=index_name)

        if not result:
            result = await client.indices.create(
                index=index_name,
                mappings={
                    "properties": {
                        "name": {
                            "type": "text",
                            # "analyzer": "ik_max_word"  # 已修正拼写错误
                            "analyzer": "standard"  # 已修正拼写错误
                        },
                        "brand": {
                            "type": "keyword"
                        },
                        "price": {
                            "type": "float"
                        }
                    }
                }
            )
            print(result)

        # 无论索引是否已存在,都确保关闭连接
        await es_client_manager.close()


    #asyncio.run(test_create())

    async  def test_add_doc():
        result=await client.index(
            index=index_name,
            document={
                "name":"huawei华为手机meta80",
                "brand":"华为",
                "price":9222
            }
        )

        print(result)

        await es_client_manager.close()

    # asyncio.run(test_add_doc())

    async def test_add_docs():

        operations=[]

        goods_list=["小米手机116","小米汽车","华为手机meta80","华为汽车","苹果手机","苹果汽车","苹果iphone"]

        for good in goods_list:
            operations.append(
                {"index":{"_index":index_name}}
            )

            operations.append(
                {
                    "name":good,
                    "price":random.randint(1000,9999),
                    "brand":"小米"
                }
            )
        result = await client.bulk(operations=operations)


        print(result)

        await es_client_manager.close()

    asyncio.run(test_add_docs())

当 ES 和 kibana链接时,Ik_max_word失效问题:

E:\笔记2026项目\项目一_问数\1.docker镜像>docker exec -it elasticsearch /usr/share/elasticsearch/bin/elasticsearch-plugin list

analysis-ik

如果没有 analysis-ik

可以重新安装

测试 有时候 与本地 某些冲突有关

可以用python脚本 测试

或者:

相关推荐
GrowingIO技术社区1 小时前
留存率怎么算?用户范围、回访行为与时间窗口
数据分析
用户3721574261354 小时前
C# 实现 Excel 单元格保护:锁定公式并允许编辑指定区域
c#·ai编程·编程语言
公子小六9 小时前
基于.NET的Windows窗体编程之WinForms数据持久化(1)
windows·microsoft·c#·.net·winforms
Elastic 中国社区官方博客9 小时前
更少的位数,相同的召回率:DiskBBQ 更保守的自动校准扫描
大数据·运维·开发语言·人工智能·elasticsearch·搜索引擎
慧都小妮子9 小时前
Wyn商业智能国产数据库适配:数据接入、分析缓存与审计日志验证清单
数据库·数据分析·数据可视化·审计日志·商业智能
三雷科技10 小时前
第6章第4节:自定义分词器
开发语言·c#
Aloudata11 小时前
Claude 做数据分析的这两年:一份复盘与发展线索
大数据·数据库·人工智能·数据挖掘·数据分析·dataagent
Elasticsearch11 小时前
Kibana 中的人工智能连接器:你的 agent 可调用的 90 多个数据源
elasticsearch
zhanghaha131411 小时前
C# 系列教程_12 字符串 string 保姆级系统教程(面向新手,大量示例 + 原理讲解)
开发语言·数据库·c#
wang_yb1 天前
新数据到手,先跑哪几步检查
数据分析·databook