数据分析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脚本 测试

或者:

相关推荐
唐青枫2 小时前
别把 ImmutableArray 当成只读 List:C#.NET 不可变数组深入详解
c#·.net
Elasticsearch3 小时前
什么是混合搜索?
elasticsearch
zlinear数据采集卡4 小时前
D223 ADC数据处理流水线:从原始采样值到工程单位的完整转换链
开发语言·arm开发·嵌入式硬件·fpga开发·开源·c#
观远数据6 小时前
AI+BI时代的数据合规三重门:传输、存储、消费如何一体化管控
大数据·数据分析
@insist1236 小时前
系统集成项目管理工程师-数据分析应用与数据安全
数据分析·软考·系统集成项目管理工程师·软考中项·软件水平考试
花落人散处8 小时前
CDiskClean 开发历程 —— 文件清理_目录树解析实现方案参考
c#
离陌在学C#8 小时前
C# 泛型:从基础到高级应用
开发语言·c#
Vertira8 小时前
C# 与 OpencvSharp 编程[基础目录]
c#
Elasticsearch8 小时前
从点击流中提升搜索相关性:使用 Learn To Rank 和 OpenTelemetry 行为信号
elasticsearch