[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-elastic--eland":3,"tool-elastic--eland":64},[4,17,27,35,43,56],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":16},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,3,"2026-04-05T11:01:52",[13,14,15],"开发框架","图像","Agent","ready",{"id":18,"name":19,"github_repo":20,"description_zh":21,"stars":22,"difficulty_score":23,"last_commit_at":24,"category_tags":25,"status":16},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",140436,2,"2026-04-05T23:32:43",[13,15,26],"语言模型",{"id":28,"name":29,"github_repo":30,"description_zh":31,"stars":32,"difficulty_score":23,"last_commit_at":33,"category_tags":34,"status":16},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107662,"2026-04-03T11:11:01",[13,14,15],{"id":36,"name":37,"github_repo":38,"description_zh":39,"stars":40,"difficulty_score":23,"last_commit_at":41,"category_tags":42,"status":16},3704,"NextChat","ChatGPTNextWeb\u002FNextChat","NextChat 是一款轻量且极速的 AI 助手，旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性，以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发，NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。\n\n这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言，它也提供了便捷的自托管方案，支持一键部署到 Vercel 或 Zeabur 等平台。\n\nNextChat 的核心亮点在于其广泛的模型兼容性，原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型，让用户在一个界面即可自由切换不同 AI 能力。此外，它还率先支持 MCP（Model Context Protocol）协议，增强了上下文处理能力。针对企业用户，NextChat 提供专业版解决方案，具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能，满足公司对数据隐私和个性化管理的高标准要求。",87618,"2026-04-05T07:20:52",[13,26],{"id":44,"name":45,"github_repo":46,"description_zh":47,"stars":48,"difficulty_score":23,"last_commit_at":49,"category_tags":50,"status":16},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,"2026-04-05T10:45:23",[14,51,52,53,15,54,26,13,55],"数据工具","视频","插件","其他","音频",{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":10,"last_commit_at":62,"category_tags":63,"status":16},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,"2026-04-04T04:44:48",[15,14,13,26,54],{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":69,"readme_en":70,"readme_zh":71,"quickstart_zh":72,"use_case_zh":73,"hero_image_url":74,"owner_login":75,"owner_name":75,"owner_avatar_url":76,"owner_bio":77,"owner_company":78,"owner_location":78,"owner_email":79,"owner_twitter":78,"owner_website":80,"owner_url":81,"languages":82,"stars":99,"forks":100,"last_commit_at":101,"license":102,"difficulty_score":10,"env_os":103,"env_gpu":104,"env_ram":104,"env_deps":105,"category_tags":116,"github_topics":117,"view_count":10,"oss_zip_url":78,"oss_zip_packed_at":78,"status":16,"created_at":128,"updated_at":129,"faqs":130,"releases":161},1059,"elastic\u002Feland","eland","Python Client and Toolkit for DataFrames, Big Data, Machine Learning and ETL in Elasticsearch","Eland是一个用于Elasticsearch的Python客户端，提供类似Pandas的API，方便用户处理大数据、机器学习和ETL任务。它允许用户直接在Elasticsearch中操作数据，无需将数据加载到内存，从而高效处理大规模数据集。同时支持将scikit-learn、XGBoost、LightGBM等机器学习模型上传至Elasticsearch，实现模型与数据的无缝集成。对于需要分析Elasticsearch中结构化数据的开发者和研究人员，Eland提供了直观的接口和灵活的扩展性，可快速构建数据处理流水线。其核心优势在于兼容多种数据处理框架，并通过低层级Elasticsearch客户端实现高性能数据交互。适合需要在Elasticsearch中进行复杂数据分析、模型部署或数据转换的开发者，尤其适用于处理海量数据场景。","\u003Cdiv align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Felastic\u002Feland\">\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Felastic_eland_readme_31df7e9120c9.png\" width=\"30%\"\n      alt=\"Eland\" \u002F>\n  \u003C\u002Fa>\n\u003C\u002Fdiv>\n\u003Cbr \u002F>\n\u003Cdiv align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Feland\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Feland.svg\" alt=\"PyPI Version\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fanaconda.org\u002Fconda-forge\u002Feland\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fconda\u002Fvn\u002Fconda-forge\u002Feland\"\n      alt=\"Conda Version\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fpepy.tech\u002Fproject\u002Feland\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Felastic_eland_readme_4a01beed10ce.png\" alt=\"Downloads\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Feland\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fstatus\u002Feland.svg\"\n      alt=\"Package Status\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fbuildkite.com\u002Felastic\u002Feland\">\u003Cimg src=\"https:\u002F\u002Fbadge.buildkite.com\u002Fd92340e800bc06a7c7c02a71b8d42fcb958bd18c25f99fe2d9.svg\" alt=\"Build Status\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Felastic\u002Feland\u002Fblob\u002Fmain\u002FLICENSE.txt\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fl\u002Feland.svg\"\n      alt=\"License\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Feland.readthedocs.io\">\u003Cimg\n      src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Felastic_eland_readme_13d664e1afd7.png\" alt=\"Documentation Status\">\u003C\u002Fa>\n\u003C\u002Fdiv>\n\n## About\n\nEland is a Python Elasticsearch client for exploring and  analyzing data in Elasticsearch with a familiar\nPandas-compatible API.\n\nWhere possible the package uses existing Python APIs and data structures to make it easy to switch between numpy,\npandas, or scikit-learn to their Elasticsearch powered equivalents. In general, the data resides in Elasticsearch and\nnot in memory, which allows Eland to access large datasets stored in Elasticsearch.\n\nEland also provides tools to upload trained machine learning models from common libraries like\n[scikit-learn](https:\u002F\u002Fscikit-learn.org), [XGBoost](https:\u002F\u002Fxgboost.readthedocs.io),  and\n[LightGBM](https:\u002F\u002Flightgbm.readthedocs.io) into Elasticsearch.\n\n## Getting Started\n\nEland can be installed from [PyPI](https:\u002F\u002Fpypi.org\u002Fproject\u002Feland) with Pip:\n\n```bash\n$ python -m pip install eland\n```\n\nIf using Eland to upload NLP models to Elasticsearch install the PyTorch extras:\n```bash\n$ python -m pip install 'eland[pytorch]'\n```\n\nEland can also be installed from [Conda Forge](https:\u002F\u002Fanaconda.org\u002Fconda-forge\u002Feland) with Conda:\n\n```bash\n$ conda install -c conda-forge eland\n```\n\n### Compatibility\n\n- Supports Python 3.10, 3.11, 3.12 and 3.13.\n- Supports Pandas 1.5 and 2.\n- Supports Elasticsearch 9+ clusters.\n  If you are using the NLP with PyTorch feature make sure your Eland minor version matches the minor \n  version of your Elasticsearch cluster. For all other features it is sufficient for the major version\n  to match. Use Eland 8.x for Elasticsearch 8.x support.\n- You need to install the appropriate version of PyTorch to import an NLP model. Run `python -m pip\n  install 'eland[pytorch]'` to install that version.\n  \n### Prerequisites\n\nUsers installing Eland on Debian-based distributions may need to install prerequisite packages for the transitive\ndependencies of Eland:\n\n```bash\n$ sudo apt-get install -y \\\n  build-essential pkg-config cmake \\\n  python3-dev libzip-dev libjpeg-dev\n```\n\nNote that other distributions such as CentOS, RedHat, Arch, etc. may require using a different package manager and\nspecifying different package names. \n\n### Docker\n\nIf you want to use Eland without installing it just to run the available scripts, use the Docker\nimage.\nIt can be used interactively:\n\n```bash\n$ docker run -it --rm --network host docker.elastic.co\u002Feland\u002Feland\n```\n\nRunning installed scripts is also possible without an interactive shell, e.g.:\n\n```bash\n$ docker run -it --rm --network host \\\n    docker.elastic.co\u002Feland\u002Feland \\\n    eland_import_hub_model \\\n      --url http:\u002F\u002Fhost.docker.internal:9200\u002F \\\n      --hub-model-id elastic\u002Fdistilbert-base-cased-finetuned-conll03-english \\\n      --task-type ner\n```\n\n### Connecting to Elasticsearch\n\nEland uses the [Elasticsearch low level client](https:\u002F\u002Felasticsearch-py.readthedocs.io) to connect to Elasticsearch. \nThis client supports a range of [connection options and authentication options](https:\u002F\u002Felasticsearch-py.readthedocs.io\u002Fen\u002Fstable\u002Fapi.html#elasticsearch). \n\nYou can pass either an instance of `elasticsearch.Elasticsearch` to Eland APIs\nor a string containing the host to connect to:\n\n```python\nimport eland as ed\n\n# Connecting to an Elasticsearch instance running on 'http:\u002F\u002Flocalhost:9200'\ndf = ed.DataFrame(\"http:\u002F\u002Flocalhost:9200\", es_index_pattern=\"flights\")\n\n# Connecting to an Elastic Cloud instance\nfrom elasticsearch import Elasticsearch\n\nes = Elasticsearch(\n    cloud_id=\"cluster-name:...\",\n    basic_auth=(\"elastic\", \"\u003Cpassword>\")\n)\ndf = ed.DataFrame(es, es_index_pattern=\"flights\")\n```\n\n## DataFrames in Eland\n\n`eland.DataFrame` wraps an Elasticsearch index in a Pandas-like API\nand defers all processing and filtering of data to Elasticsearch\ninstead of your local machine. This means you can process large\namounts of data within Elasticsearch from a Jupyter Notebook\nwithout overloading your machine.\n\n➤ [Eland DataFrame API documentation](https:\u002F\u002Feland.readthedocs.io\u002Fen\u002Flatest\u002Freference\u002Fdataframe.html)\n\n➤ [Advanced examples in a Jupyter Notebook](https:\u002F\u002Feland.readthedocs.io\u002Fen\u002Flatest\u002Fexamples\u002Fdemo_notebook.html)\n\n```python\n>>> import eland as ed\n\n>>> # Connect to 'flights' index via localhost Elasticsearch node\n>>> df = ed.DataFrame('http:\u002F\u002Flocalhost:9200', 'flights')\n\n# eland.DataFrame instance has the same API as pandas.DataFrame\n# except all data is in Elasticsearch. See .info() memory usage.\n>>> df.head()\n   AvgTicketPrice  Cancelled  ... dayOfWeek           timestamp\n0      841.265642      False  ...         0 2018-01-01 00:00:00\n1      882.982662      False  ...         0 2018-01-01 18:27:00\n2      190.636904      False  ...         0 2018-01-01 17:11:14\n3      181.694216       True  ...         0 2018-01-01 10:33:28\n4      730.041778      False  ...         0 2018-01-01 05:13:00\n\n[5 rows x 27 columns]\n\n>>> df.info()\n\u003Cclass 'eland.dataframe.DataFrame'>\nIndex: 13059 entries, 0 to 13058\nData columns (total 27 columns):\n #   Column              Non-Null Count  Dtype         \n---  ------              --------------  -----         \n 0   AvgTicketPrice      13059 non-null  float64       \n 1   Cancelled           13059 non-null  bool          \n 2   Carrier             13059 non-null  object        \n...      \n 24  OriginWeather       13059 non-null  object        \n 25  dayOfWeek           13059 non-null  int64         \n 26  timestamp           13059 non-null  datetime64[ns]\ndtypes: bool(2), datetime64[ns](1), float64(5), int64(2), object(17)\nmemory usage: 80.0 bytes\nElasticsearch storage usage: 5.043 MB\n\n# Filtering of rows using comparisons\n>>> df[(df.Carrier==\"Kibana Airlines\") & (df.AvgTicketPrice > 900.0) & (df.Cancelled == True)].head()\n     AvgTicketPrice  Cancelled  ... dayOfWeek           timestamp\n8        960.869736       True  ...         0 2018-01-01 12:09:35\n26       975.812632       True  ...         0 2018-01-01 15:38:32\n311      946.358410       True  ...         0 2018-01-01 11:51:12\n651      975.383864       True  ...         2 2018-01-03 21:13:17\n950      907.836523       True  ...         2 2018-01-03 05:14:51\n\n[5 rows x 27 columns]\n\n# Running aggregations across an index\n>>> df[['DistanceKilometers', 'AvgTicketPrice']].aggregate(['sum', 'min', 'std'])\n     DistanceKilometers  AvgTicketPrice\nsum        9.261629e+07    8.204365e+06\nmin        0.000000e+00    1.000205e+02\nstd        4.578263e+03    2.663867e+02\n```\n\n## Machine Learning in Eland\n\n### Regression and classification\n\nEland allows transforming trained regression and classification models from scikit-learn, XGBoost, and LightGBM\nlibraries to be serialized and used as an inference model in Elasticsearch.\n\n➤ [Eland Machine Learning API documentation](https:\u002F\u002Feland.readthedocs.io\u002Fen\u002Flatest\u002Freference\u002Fml.html)\n\n➤ [Read more about Machine Learning in Elasticsearch](https:\u002F\u002Fwww.elastic.co\u002Fguide\u002Fen\u002Fmachine-learning\u002Fcurrent\u002Fml-getting-started.html)\n\n```python\n>>> from sklearn import datasets\n>>> from xgboost import XGBClassifier\n>>> from eland.ml import MLModel\n\n# Train and exercise an XGBoost ML model locally\n>>> training_data = datasets.make_classification(n_features=5)\n>>> xgb_model = XGBClassifier(booster=\"gbtree\")\n>>> xgb_model.fit(training_data[0], training_data[1])\n\n>>> xgb_model.predict(training_data[0])\n[0 1 1 0 1 0 0 0 1 0]\n\n# Import the model into Elasticsearch\n>>> es_model = MLModel.import_model(\n    es_client=\"http:\u002F\u002Flocalhost:9200\",\n    model_id=\"xgb-classifier\",\n    model=xgb_model,\n    feature_names=[\"f0\", \"f1\", \"f2\", \"f3\", \"f4\"],\n)\n\n# Exercise the ML model in Elasticsearch with the training data\n>>> es_model.predict(training_data[0])\n[0 1 1 0 1 0 0 0 1 0]\n```\n\n### NLP with PyTorch\n\n> [!WARNING]  \n> PyTorch models can execute code on your Elasticsearch server, exposing your cluster to potential security vulnerabilities.\n> **Only use models from trusted sources and never use models from unverified or unknown providers.**\n\nFor NLP tasks, Eland allows importing PyTorch trained BERT models into Elasticsearch. Models can be either plain PyTorch\nmodels, or supported [transformers](https:\u002F\u002Fhuggingface.co\u002Ftransformers) models from the\n[Hugging Face model hub](https:\u002F\u002Fhuggingface.co\u002Fmodels).\n\n```bash\n$ eland_import_hub_model \\\n  --url http:\u002F\u002Flocalhost:9200\u002F \\\n  --hub-model-id elastic\u002Fdistilbert-base-cased-finetuned-conll03-english \\\n  --task-type ner \\\n  --start\n```\n\nThe example above will automatically start a model deployment. This is a\ngood shortcut for initial experimentation, but for anything that needs\ngood throughput you should omit the `--start` argument from the Eland\ncommand line and instead start the model using the ML UI in Kibana.\nThe `--start` argument will deploy the model with one allocation and one\nthread per allocation, which will not offer good performance. When starting\nthe model deployment using the ML UI in Kibana or the Elasticsearch\n[API](https:\u002F\u002Fwww.elastic.co\u002Fguide\u002Fen\u002Felasticsearch\u002Freference\u002Fcurrent\u002Fstart-trained-model-deployment.html)\nyou will be able to set the threading options to make the best use of your\nhardware.\n\n```python\n>>> import elasticsearch\n>>> from pathlib import Path\n>>> from eland.common import es_version\n>>> from eland.ml.pytorch import PyTorchModel\n>>> from eland.ml.pytorch.transformers import TransformerModel\n\n>>> es = elasticsearch.Elasticsearch(\"http:\u002F\u002Felastic:mlqa_admin@localhost:9200\")\n>>> es_cluster_version = es_version(es)\n\n# Load a Hugging Face transformers model directly from the model hub\n>>> tm = TransformerModel(model_id=\"elastic\u002Fdistilbert-base-cased-finetuned-conll03-english\", task_type=\"ner\", es_version=es_cluster_version)\nDownloading: 100%|██████████| 257\u002F257 [00:00\u003C00:00, 108kB\u002Fs]\nDownloading: 100%|██████████| 954\u002F954 [00:00\u003C00:00, 372kB\u002Fs]\nDownloading: 100%|██████████| 208k\u002F208k [00:00\u003C00:00, 668kB\u002Fs] \nDownloading: 100%|██████████| 112\u002F112 [00:00\u003C00:00, 43.9kB\u002Fs]\nDownloading: 100%|██████████| 249M\u002F249M [00:23\u003C00:00, 11.2MB\u002Fs]\n\n# Export the model in a TorchScrpt representation which Elasticsearch uses\n>>> tmp_path = \"models\"\n>>> Path(tmp_path).mkdir(parents=True, exist_ok=True)\n>>> model_path, config, vocab_path = tm.save(tmp_path)\n\n# Import model into Elasticsearch\n>>> ptm = PyTorchModel(es, tm.elasticsearch_model_id())\n>>> ptm.import_model(model_path=model_path, config_path=None, vocab_path=vocab_path, config=config)\n100%|██████████| 63\u002F63 [00:12\u003C00:00,  5.02it\u002Fs]\n```\n","\u003Cdiv align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Felastic\u002Feland\">\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Felastic_eland_readme_31df7e9120c9.png\" width=\"30%\"\n      alt=\"Eland\" \u002F>\n  \u003C\u002Fa>\n\u003C\u002Fdiv>\n\u003Cbr \u002F>\n\u003Cdiv align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Feland\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Feland.svg\" alt=\"PyPI 版本\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fanaconda.org\u002Fconda-forge\u002Feland\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fconda\u002Fvn\u002Fconda-forge\u002Feland\"\n      alt=\"Conda 版本\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fpepy.tech\u002Fproject\u002Feland\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Felastic_eland_readme_4a01beed10ce.png\" alt=\"下载量\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Feland\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fstatus\u002Feland.svg\"\n      alt=\"包状态\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fbuildkite.com\u002Felastic\u002Feland\">\u003Cimg src=\"https:\u002F\u002Fbadge.buildkite.com\u002Fd92340e800bc06a7c7c02a71b8d42fcb958bd18c25f99fe2d9.svg\" alt=\"构建状态\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Felastic\u002Feland\u002Fblob\u002Fmain\u002FLICENSE.txt\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fl\u002Feland.svg\"\n      alt=\"许可证\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Feland.readthedocs.io\">\u003Cimg\n      src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Felastic_eland_readme_13d664e1afd7.png\" alt=\"文档状态\">\u003C\u002Fa>\n\u003C\u002Fdiv>\n\n## 关于\n\nEland 是一个 Python Elasticsearch 客户端（Elasticsearch 是一个分布式搜索和分析引擎），通过类 Pandas 的 API 探索和分析 Elasticsearch 中的数据。\n\n在可能的情况下，该包使用现有的 Python API 和数据结构，使您能够轻松在 numpy、pandas 或 scikit-learn 与其 Elasticsearch 实现之间切换。通常，数据存储在 Elasticsearch 中而非内存中，这使 Eland 能够访问存储在 Elasticsearch 中的大型数据集。\n\nEland 还提供工具将来自常见库（如 [scikit-learn](https:\u002F\u002Fscikit-learn.org)、[XGBoost](https:\u002F\u002Fxgboost.readthedocs.io) 和 [LightGBM](https:\u002F\u002Flightgbm.readthedocs.io)）的训练好的机器学习模型上传到 Elasticsearch。\n\n## 快速开始\n\nEland 可通过 Pip 从 [PyPI](https:\u002F\u002Fpypi.org\u002Fproject\u002Feland) 安装：\n\n```bash\n$ python -m pip install eland\n```\n\n如果使用 Eland 向 Elasticsearch 上传 NLP 模型，请安装 PyTorch 扩展：\n```bash\n$ python -m pip install 'eland[pytorch]'\n```\n\nEland 也可通过 Conda 从 [Conda Forge](https:\u002F\u002Fanaconda.org\u002Fconda-forge\u002Feland) 安装：\n\n```bash\n$ conda install -c conda-forge eland\n```\n\n### 兼容性\n\n- 支持 Python 3.10、3.11、3.12 和 3.13 版本\n- 支持 Pandas 1.5 和 2 版本\n- 支持 Elasticsearch 9+ 集群\n  如果使用 NLP 和 PyTorch 功能，请确保 Eland 的次版本号与 Elasticsearch 集群的次版本号匹配。对于其他功能，主版本号匹配即可。使用 Eland 8.x 对应 Elasticsearch 8.x\n- 导入 NLP 模型需要安装适当版本的 PyTorch。运行 `python -m pip install 'eland[pytorch]'` 可安装对应版本\n\n### 先决条件\n\n基于 Debian 的系统用户可能需要安装 Eland 依赖的前置软件包：\n\n```bash\n$ sudo apt-get install -y \\\n  build-essential pkg-config cmake \\\n  python3-dev libzip-dev libjpeg-dev\n```\n\n注意：CentOS、RedHat、Arch 等其他发行版可能需要使用不同的包管理器和包名。\n\n### Docker\n\n如需在不安装 Eland 的情况下运行脚本，可使用 Docker 镜像：\n交互式运行：\n\n```bash\n$ docker run -it --rm --network host docker.elastic.co\u002Feland\u002Feland\n```\n\n无需交互式 shell 运行已安装的脚本示例：\n\n```bash\n$ docker run -it --rm --network host \\\n    docker.elastic.co\u002Feland\u002Feland \\\n    eland_import_hub_model \\\n      --url http:\u002F\u002Fhost.docker.internal:9200\u002F \\\n      --hub-model-id elastic\u002Fdistilbert-base-cased-finetuned-conll03-english \\\n      --task-type ner\n```\n\n### 连接到 Elasticsearch\n\nEland 使用 [Elasticsearch 低级客户端](https:\u002F\u002Felasticsearch-py.readthedocs.io) 连接 Elasticsearch。该客户端支持多种[连接选项和认证选项](https:\u002F\u002Felasticsearch-py.readthedocs.io\u002Fen\u002Fstable\u002Fapi.html#elasticsearch)。\n\n您可以传递 `elasticsearch.Elasticsearch` 实例或包含连接地址的字符串给 Eland API：\n\n```python\nimport eland as ed\n\n# 连接到本地运行的 Elasticsearch 实例\ndf = ed.DataFrame(\"http:\u002F\u002Flocalhost:9200\", es_index_pattern=\"flights\")\n\n# 连接到 Elastic Cloud 实例\nfrom elasticsearch import Elasticsearch\n\nes = Elasticsearch(\n    cloud_id=\"cluster-name:...\",\n    basic_auth=(\"elastic\", \"\u003Cpassword>\")\n)\ndf = ed.DataFrame(es, es_index_pattern=\"flights\")\n```\n\n## Eland 中的数据帧\n\n`eland.DataFrame` 通过类 Pandas 的 API 封装 Elasticsearch 索引，将所有数据处理和过滤操作推迟到 Elasticsearch 而非本地机器执行。这意味着您可以通过 Jupyter Notebook 处理 Elasticsearch 中的大型数据集而不会使本地机器过载。\n\n➤ [Eland 数据帧 API 文档](https:\u002F\u002Feland.readthedocs.io\u002Fen\u002Flatest\u002Freference\u002Fdataframe.html)\n\n➤ [Jupyter Notebook 高级示例](https:\u002F\u002Feland.readthedocs.io\u002Fen\u002Flatest\u002Fexamples\u002Fdemo_notebook.html)\n\n```python\n>>> import eland as ed\n\n>>> # 通过本地 Elasticsearch 节点连接 'flights' 索引\n>>> df = ed.DataFrame('http:\u002F\u002Flocalhost:9200', 'flights')\n\n# eland.DataFrame 实例的 API 与 pandas.DataFrame 相同\n# 但所有数据存储在 Elasticsearch 中。查看 .info() 的内存使用情况\n>>> df.head()\n   AvgTicketPrice  Cancelled  ... dayOfWeek           timestamp\n0      841.265642      False  ...         0 2018-01-01 00:00:00\n1      882.982662      False  ...         0 2018-01-01 18:27:00\n2      190.636904      False  ...         0 2018-01-01 17:11:14\n3      181.694216       True  ...         0 2018-01-01 10:33:28\n4      730.041778      False  ...         0 2018-01-01 05:13:00\n\n[5 rows x 27 columns]\n\n>>> df.info()\n\u003Cclass 'eland.dataframe.DataFrame'>\nIndex: 13059 条记录，从 0 到 13058\n数据列 (共 27 列):\n #   列名              非空数量  数据类型         \n---  ------              --------------  -----         \n 0   AvgTicketPrice      13059 非空  float64       \n 1   Cancelled           13059 非空  bool          \n 2   Carrier             13059 非空  object        \n...      \n 24  OriginWeather       13059 非空  object        \n 25  dayOfWeek           13059 非空  int64         \n 26  timestamp           13059 非空  datetime64[ns]\n数据类型：bool(2), datetime64[ns](1), float64(5), int64(2), object(17)\n内存使用量：80.0 字节\nElasticsearch 存储使用量：5.043 MB\n\n# 使用比较进行行过滤\n>>> df[(df.Carrier==\"Kibana Airlines\") & (df.AvgTicketPrice > 900.0) & (df.Cancelled == True)].head()\n     AvgTicketPrice  Cancelled  ... dayOfWeek           timestamp\n8        960.869736       True  ...         0 2018-01-01 12:09:35\n26       975.812632       True  ...         0 2018-01-01 15:38:32\n311      946.358410       True  ...         0 2018-01-01 11:51:12\n651      975.383864       True  ...         2 2018-01-03 21:13:17\n950      907.836523       True  ...         2 2018-01-03 05:14:51\n\n[5 rows x 27 columns]\n\n# 在索引上执行聚合操作\n>>> df[['DistanceKilometers', 'AvgTicketPrice']].aggregate(['sum', 'min', 'std'])\n     DistanceKilometers  AvgTicketPrice\nsum        9.261629e+07    8.204365e+06\nmin        0.000000e+00    1.000205e+02\nstd        4.578263e+03    2.663867e+02\n```\n\n## Eland中的机器学习\n\n### 回归与分类\n\nEland（爱兰德）支持将scikit-learn、XGBoost（极限梯度提升）和LightGBM（轻量级梯度提升机）库中训练好的回归和分类模型转换为可序列化的格式，并作为推理模型在Elasticsearch中使用。\n\n➤ [Eland机器学习API文档](https:\u002F\u002Feland.readthedocs.io\u002Fen\u002Flatest\u002Freference\u002Fml.html)\n\n➤ [了解Elasticsearch中的机器学习](https:\u002F\u002Fwww.elastic.co\u002Fguide\u002Fen\u002Fmachine-learning\u002Fcurrent\u002Fml-getting-started.html)\n\n```python\n>>> from sklearn import datasets\n>>> from xgboost import XGBClassifier\n>>> from eland.ml import MLModel\n\n# 在本地训练并运行XGBoost机器学习模型\n>>> training_data = datasets.make_classification(n_features=5)\n>>> xgb_model = XGBClassifier(booster=\"gbtree\")\n>>> xgb_model.fit(training_data[0], training_data[1])\n\n>>> xgb_model.predict(training_data[0])\n[0 1 1 0 1 0 0 0 1 0]\n\n# 将模型导入Elasticsearch\n>>> es_model = MLModel.import_model(\n    es_client=\"http:\u002F\u002Flocalhost:9200\",\n    model_id=\"xgb-classifier\",\n    model=xgb_model,\n    feature_names=[\"f0\", \"f1\", \"f2\", \"f3\", \"f4\"],\n)\n\n# 在Elasticsearch中使用训练数据运行机器学习模型\n>>> es_model.predict(training_data[0])\n[0 1 1 0 1 0 0 0 1 0]\n```\n\n### 使用PyTorch的NLP（自然语言处理）\n\n> [!WARNING]  \n> PyTorch模型可能在Elasticsearch服务器上执行代码，使集群面临潜在安全漏洞风险。\n> **仅使用可信来源的模型，切勿使用未经验证或未知提供者的模型。**\n\n对于自然语言处理任务，Eland支持将PyTorch训练的BERT模型导入Elasticsearch。模型可以是普通PyTorch模型，也可以是来自[Hugging Face模型库](https:\u002F\u002Fhuggingface.co\u002Fmodels)的[transformers（转换器）](https:\u002F\u002Fhuggingface.co\u002Ftransformers)支持模型。\n\n```bash\n$ eland_import_hub_model \\\n  --url http:\u002F\u002Flocalhost:9200\u002F \\\n  --hub-model-id elastic\u002Fdistilbert-base-cased-finetuned-conll03-english \\\n  --task-type ner \\\n  --start\n```\n\n上述示例将自动启动模型部署。这对于初始实验是很好的快捷方式，但对于需要良好吞吐量的场景，建议省略Eland命令行中的`--start`参数，改用Kibana的ML UI启动模型。`--start`参数将以每个分配一个线程的配置部署模型，性能表现不佳。通过Kibana的ML UI或Elasticsearch[API](https:\u002F\u002Fwww.elastic.co\u002Fguide\u002Fen\u002Felasticsearch\u002Freference\u002Fcurrent\u002Fstart-trained-model-deployment.html)启动模型部署时，可以设置线程选项以充分利用硬件性能。\n\n```python\n>>> import elasticsearch\n>>> from pathlib import Path\n>>> from eland.common import es_version\n>>> from eland.ml.pytorch import PyTorchModel\n>>> from eland.ml.pytorch.transformers import TransformerModel\n\n>>> es = elasticsearch.Elasticsearch(\"http:\u002F\u002Felastic:mlqa_admin@localhost:9200\")\n>>> es_cluster_version = es_version(es)\n\n# 直接从模型库加载Hugging Face转换器模型\n>>> tm = TransformerModel(model_id=\"elastic\u002Fdistilbert-base-cased-finetuned-conll03-english\", task_type=\"ner\", es_version=es_cluster_version)\nDownloading: 100%|██████████| 257\u002F257 [00:00\u003C00:00, 108kB\u002Fs]\nDownloading: 100%|██████████| 954\u002F954 [00:00\u003C00:00, 372kB\u002Fs]\nDownloading: 100%|██████████| 208k\u002F208k [00:00\u003C00:00, 668kB\u002Fs] \nDownloading: 100%|██████████| 112\u002F112 [00:00\u003C00:00, 43.9kB\u002Fs]\nDownloading: 100%|██████████| 249M\u002F249M [00:23\u003C00:00, 11.2MB\u002Fs]\n\n# 将模型导出为Elasticsearch使用的TorchScrpt格式\n>>> tmp_path = \"models\"\n>>> Path(tmp_path).mkdir(parents=True, exist_ok=True)\n>>> model_path, config, vocab_path = tm.save(tmp_path)\n\n# 将模型导入Elasticsearch\n>>> ptm = PyTorchModel(es, tm.elasticsearch_model_id())\n>>> ptm.import_model(model_path=model_path, config_path=None, vocab_path=vocab_path, config=config)\n100%|██████████| 63\u002F63 [00:12\u003C00:00,  5.02it\u002Fs]\n```","# Eland 快速上手指南\n\n## 环境准备\n- **Python版本**：3.10\u002F3.11\u002F3.12\u002F3.13\n- **系统依赖**（Debian\u002FUbuntu用户）：\n  ```bash\n  sudo apt-get install -y build-essential pkg-config cmake python3-dev libzip-dev libjpeg-dev\n  ```\n- **Elasticsearch**：9.x 或更新版本（需提前启动并配置）\n- **可选依赖**：使用NLP功能时需安装PyTorch（建议使用国内镜像安装）\n\n## 安装步骤\n### 使用 pip 安装（推荐清华源加速）\n```bash\n# 基础安装\npython -m pip install eland -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n\n# 安装NLP扩展（含PyTorch）\npython -m pip install 'eland[pytorch]' -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n### 使用 conda 安装\n```bash\nconda install -c conda-forge eland\n```\n\n### Docker 快速体验\n```bash\n# 交互式运行\ndocker run -it --rm --network host docker.elastic.co\u002Feland\u002Feland\n\n# 直接执行命令示例\ndocker run -it --rm --network host \\\n  docker.elastic.co\u002Feland\u002Feland \\\n  eland_import_hub_model \\\n    --url http:\u002F\u002Fhost.docker.internal:9200\u002F \\\n    --hub-model-id elastic\u002Fdistilbert-base-cased-finetuned-conll03-english \\\n    --task-type ner\n```\n\n## 基本使用\n### 连接Elasticsearch并读取数据\n```python\nimport eland as ed\n\n# 连接本地Elasticsearch\ndf = ed.DataFrame(\"http:\u002F\u002Flocalhost:9200\", es_index_pattern=\"flights\")\n\n# 查看前5行数据\ndf.head()\n```\n\n### 输出示例\n```\n   AvgTicketPrice  Cancelled  ... dayOfWeek           timestamp\n0      841.265642      False  ...         0 2018-01-01 00:00:00\n1      882.982662      False  ...         0 2018-01-01 18:27:00\n2      190.636904      False  ...         0 2018-01-01 17:11:14\n3      181.694216       True  ...         0 2018-01-01 10:33:28\n4      730.041778      False  ...         0 2018-01-01 05:13:00\n```\n\n### 数据分析操作\n```python\n# 查看数据统计信息\ndf.info()\n\n# 条件过滤数据\ndf[(df.Carrier==\"Kibana Airlines\") & (df.AvgTicketPrice > 900.0)].head()\n\n# 执行聚合计算\ndf[['DistanceKilometers', 'AvgTicketPrice']].aggregate(['sum', 'min', 'std'])\n```\n\n> 提示：首次使用建议先导入示例数据（如Elasticsearch自带的`flights`索引），具体可参考[Elasticsearch官方示例数据导入指南](https:\u002F\u002Fwww.elastic.co\u002Fguide\u002Fen\u002Fkibana\u002Fcurrent\u002Ftutorial-load-dataset.html)。","某电商平台需要实时分析用户行为数据以优化推荐系统，数据团队尝试将用户点击流日志与商品数据库进行关联分析。\n\n### 没有 eland 时\n- 需要将 Elasticsearch 中的点击流日志导出到 CSV 文件，再用 Pandas 加载分析，导致数据延迟 30 分钟以上\n- 当用户量超过 500 万时，本地 Pandas 处理频繁触发内存溢出错误\n- 机器学习模型训练使用 scikit-learn，部署到生产环境需要额外开发 REST API 服务\n- 维护 Elasticsearch 聚合查询与 Pandas 数据处理两套代码逻辑，同步成本高\n- 实时推荐效果受限于离线数据同步频率，无法及时响应用户行为变化\n\n### 使用 eland 后\n- 直接通过 Pandas 风格 API 查询 Elasticsearch 实时数据，端到端延迟降低至 5 秒内\n- 利用 eland.DataFrame 本地内存仅存储元数据，轻松处理 10 倍规模的用户行为数据\n- 通过 `eland.ml` 模块直接上传训练好的 scikit-learn 模型到 Elasticsearch，省去自建服务的开发维护\n- 统一使用 Pandas 语法编写数据处理逻辑，自动转换为 Elasticsearch DSL 查询\n- 结合 Elasticsearch 的近实时搜索能力，实现用户点击后 10 秒内更新推荐结果\n\n核心价值：eland 通过无缝衔接 Python 数据科学生态与 Elasticsearch 实时存储引擎，让大数据处理和机器学习部署效率提升 10 倍以上。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Felastic_eland_c47974ed.png","elastic","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Felastic_f440e060.png","",null,"info@elastic.co","https:\u002F\u002Fwww.elastic.co\u002F","https:\u002F\u002Fgithub.com\u002Felastic",[83,87,91,95],{"name":84,"color":85,"percentage":86},"Python","#3572A5",70.7,{"name":88,"color":89,"percentage":90},"Jupyter Notebook","#DA5B0B",28.3,{"name":92,"color":93,"percentage":94},"Shell","#89e051",0.9,{"name":96,"color":97,"percentage":98},"Dockerfile","#384d54",0.1,692,107,"2026-04-01T14:53:15","Apache-2.0","Linux","未说明",{"notes":106,"python":107,"dependencies":108},"使用NLP功能需安装PyTorch并注意版本匹配；Debian系统需安装build-essential等依赖；可通过Docker运行；导入PyTorch模型需确保来源可信以避免安全风险","3.10, 3.11, 3.12, 3.13",[109,110,111,112,113,114,115],"pandas>=1.5","elasticsearch>=9.0","torch","transformers","scikit-learn","xgboost","lightgbm",[51,13],[118,119,120,121,122,123,124,125,126,67,113,115,127],"python","elasticsearch","pandas","data-analysis","machine-learning","time-series-forecasting","etl","big-data","dataframe","dataframes","2026-03-27T02:49:30.150509","2026-04-06T09:45:06.507102",[131,136,141,146,151,156],{"id":132,"question_zh":133,"answer_zh":134,"source_url":135},4722,"使用eland的to_pandas转换时datetime类型丢失怎么办？","检查数据格式是否符合ElasticSearch日期格式要求。eland期望日期格式为`\"2020-04-02T11:10:00+00:00\"`（含T分隔符），若数据为`\"2020-04-02 11:10:00+00:00\"`（空格分隔），需调整数据格式。参考代码：[eland\u002Fcommon.py#L87](https:\u002F\u002Fgithub.com\u002Felastic\u002Feland\u002Fblob\u002F0dd247b69364951b8402a00dd8463a6a69bdf671\u002Feland\u002Fcommon.py#L87)","https:\u002F\u002Fgithub.com\u002Felastic\u002Feland\u002Fissues\u002F274",{"id":137,"question_zh":138,"answer_zh":139,"source_url":140},4723,"如何支持Pandas 2.0.0？","使用Eland 8.18.1或9.0.0及以上版本。已通过PR #742实现兼容，支持Pandas 2.0.0的特性。根据Elasticsearch版本选择对应Eland版本：[v8.18.1](https:\u002F\u002Fgithub.com\u002Felastic\u002Feland\u002Freleases\u002Ftag\u002Fv8.18.1) 或 [v9.0.0](https:\u002F\u002Fgithub.com\u002Felastic\u002Feland\u002Freleases\u002Ftag\u002Fv9.0.0)","https:\u002F\u002Fgithub.com\u002Felastic\u002Feland\u002Fissues\u002F601",{"id":142,"question_zh":143,"answer_zh":144,"source_url":145},4724,"multilingual-e5-small模型启动时报错缺少token_type_ids参数怎么办？","该模型需确保模型架构与分词器匹配。若使用XLM-RoBERTa分词器的BERT模型，需修改模型包装逻辑。建议升级Elasticsearch至修复版本（8.12+），或检查模型上传配置。跟踪问题：[elasticsearch#102541](https:\u002F\u002Fgithub.com\u002Felastic\u002Felasticsearch\u002Fissues\u002F102541)","https:\u002F\u002Fgithub.com\u002Felastic\u002Feland\u002Fissues\u002F583",{"id":147,"question_zh":148,"answer_zh":149,"source_url":150},4725,"如何配置测试环境运行eland测试脚本？","使用Docker启动指定版本的Elasticsearch，执行命令：\n```\nELASTICSEARCH_VERSION=elasticsearch:7.x-SNAPSHOT .ci\u002Frun-elasticsearch.sh\npython -m eland.tests.setup_tests\n```","https:\u002F\u002Fgithub.com\u002Felastic\u002Feland\u002Fissues\u002F225",{"id":152,"question_zh":153,"answer_zh":154,"source_url":155},4726,"DataFrame.mode()聚合时如何处理缺失值？","对于数值\u002F时间戳字段，设置`missing`参数时避免使用字符串（如`\"@&@&NA&@&@\"`）。建议直接使用`.mode()`方法而非`.agg([\"mode\"])`，以避免类型解析异常。","https:\u002F\u002Fgithub.com\u002Felastic\u002Feland\u002Fissues\u002F215",{"id":157,"question_zh":158,"answer_zh":159,"source_url":160},4727,"DataFrame.groupby()功能何时实现？","该功能已在PR #278中实现并合入主分支。具体使用方式参考[pandas.DataFrame.groupby](https:\u002F\u002Fpandas.pydata.org\u002Fpandas-docs\u002Fstable\u002Freference\u002Fapi\u002Fpandas.DataFrame.groupby.html)文档。","https:\u002F\u002Fgithub.com\u002Felastic\u002Feland\u002Fissues\u002F172",[162,167,172,177,182,187,192,197,202,207,212,217,222,227,232,237,242,247,252,257],{"id":163,"version":164,"summary_zh":165,"released_at":166},113951,"v9.2.0","* Upgrade PyTorch to 2.7.1 ([#811](https:\u002F\u002Fgithub.com\u002Felastic\u002Feland\u002Fpull\u002F811))\r\n* Drop Python 3.9, support Python 3.13 ([#810](https:\u002F\u002Fgithub.com\u002Felastic\u002Feland\u002Fpull\u002F810))\r\n* Support NumPy 2 ([#809](https:\u002F\u002Fgithub.com\u002Felastic\u002Feland\u002Fpull\u002F809))\r\n* Upgrade Sentence Transformers to v5  ([#801](https:\u002F\u002Fgithub.com\u002Felastic\u002Feland\u002Fpull\u002F801))\r\n","2025-10-30T11:47:45",{"id":168,"version":169,"summary_zh":170,"released_at":171},113952,"v9.0.1","* Forbid Elasticsearch 8 client or server ([#780](https:\u002F\u002Fgithub.com\u002Felastic\u002Feland\u002Fpull\u002F780))\r\n* Fix DeBERTa tokenization ([#769](https:\u002F\u002Fgithub.com\u002Felastic\u002Feland\u002Fpull\u002F769))\r\n* Upgrade PyTorch to 2.5.1 ([#785](https:\u002F\u002Fgithub.com\u002Felastic\u002Feland\u002Fpull\u002F785))\r\n* Upgrade LightGBM to 4.6.0 ([#782](https:\u002F\u002Fgithub.com\u002Felastic\u002Feland\u002Fpull\u002F782))\r\n","2025-04-30T13:28:00",{"id":173,"version":174,"summary_zh":175,"released_at":176},113953,"v8.18.2","* Fix DeBERTa tokenization ([#778](https:\u002F\u002Fgithub.com\u002Felastic\u002Feland\u002Fpull\u002F778))\r\n* Upgrade PyTorch to 2.5.1 ([#791](https:\u002F\u002Fgithub.com\u002Felastic\u002Feland\u002Fpull\u002F791))\r\n","2025-04-30T14:12:04",{"id":178,"version":179,"summary_zh":180,"released_at":181},113954,"v9.0.0","* Drop Python 3.8, Support Python 3.12 ([#743](https:\u002F\u002Fgithub.com\u002Felastic\u002Feland\u002Fpull\u002F743))\r\n* Support Pandas 2 ([#742](https:\u002F\u002Fgithub.com\u002Felastic\u002Feland\u002Fpull\u002F742), contributed by @bartbroere)\r\n* Upgrade transformers to 4.47 ([#752](https:\u002F\u002Fgithub.com\u002Felastic\u002Feland\u002Fpull\u002F752))\r\n* Remove ML model export as sklearn Pipeline ([#744](https:\u002F\u002Fgithub.com\u002Felastic\u002Feland\u002Fpull\u002F744))\r\n* Allow scikit-learn 1.5 ([#729](https:\u002F\u002Fgithub.com\u002Felastic\u002Feland\u002Fpull\u002F729))\r\n* Migrate docs from AsciiDoc to Markdown ([#762](https:\u002F\u002Fgithub.com\u002Felastic\u002Feland\u002Fpull\u002F762))\r\n","2025-04-16T12:17:54",{"id":183,"version":184,"summary_zh":185,"released_at":186},113955,"v8.18.1","* Drop Python 3.8, Support Python 3.12 ([#743](https:\u002F\u002Fgithub.com\u002Felastic\u002Feland\u002Fpull\u002F743))\r\n* Support Pandas 2 ([#742](https:\u002F\u002Fgithub.com\u002Felastic\u002Feland\u002Fpull\u002F742), contributed by @bartbroere)\r\n* Upgrade transformers to 4.47 ([#752](https:\u002F\u002Fgithub.com\u002Felastic\u002Feland\u002Fpull\u002F752))\r\n\r\nDue to a release issue, the 8.18.0 release was skipped.","2025-04-16T15:07:04",{"id":188,"version":189,"summary_zh":190,"released_at":191},113956,"v8.17.0","* Support sparse embedding models such as SPLADE-v3-DistilBERT ([#740](https:\u002F\u002Fgithub.com\u002Felastic\u002Feland\u002Fpull\u002F740))\r\n","2025-01-07T07:01:38",{"id":193,"version":194,"summary_zh":195,"released_at":196},113957,"v8.16.0","## 8.16.0 (2024-11-13)\r\n\r\n* Add deprecation warning for ESGradientBoostingModel subclasses ([#738](https:\u002F\u002Fgithub.com\u002Felastic\u002Feland\u002Fpull\u002F738))\r\n","2024-11-14T05:11:02",{"id":198,"version":199,"summary_zh":200,"released_at":201},113958,"v8.15.4","## 8.15.4 (2024-10-17)\r\n\r\n* Revert \"Allow reading Elasticsearch certs in Wolfi image\" ([#734](https:\u002F\u002Fgithub.com\u002Felastic\u002Feland\u002Fpull\u002F734))\r\n","2024-10-18T06:56:05",{"id":203,"version":204,"summary_zh":205,"released_at":206},113959,"v8.15.3","## 8.15.3 (2024-10-09)\r\n\r\n* Added support for DeBERTa-V2 tokenizer ([#717](https:\u002F\u002Fgithub.com\u002Felastic\u002Feland\u002Fpull\u002F717))\r\n* Fixed `--ca-cert` with a shared Elasticsearch Docker volume ([#732](https:\u002F\u002Fgithub.com\u002Felastic\u002Feland\u002Fpull\u002F732))\r\n","2024-10-09T12:21:07",{"id":208,"version":209,"summary_zh":210,"released_at":211},113960,"v8.15.2","* Fixed Docker image build (#728)\n","2024-10-02T10:48:22",{"id":213,"version":214,"summary_zh":215,"released_at":216},113961,"v8.15.1","* Upgrade PyTorch to version 2.3.1, which is compatible with Elasticsearch 8.15.2 or above (#718)\n* Migrate to distroless Wolfi base Docker image (#720)\n","2024-10-01T11:33:27",{"id":218,"version":219,"summary_zh":220,"released_at":221},113962,"v8.15.0","* Added a default truncation of `second` for text similarity ([#713](https:\u002F\u002Fgithub.com\u002Felastic\u002Feland\u002Fpull\u002F713))\r\n* Added note about using text_similarity for rerank in the CLI ([#716](https:\u002F\u002Fgithub.com\u002Felastic\u002Feland\u002Fpull\u002F716))\r\n* Added support for lists in result hits ([#707](https:\u002F\u002Fgithub.com\u002Felastic\u002Feland\u002Fpull\u002F707))\r\n* Removed input fields from exported LTR models ([#708](https:\u002F\u002Fgithub.com\u002Felastic\u002Feland\u002Fpull\u002F708))\r\n","2024-08-13T09:15:59",{"id":223,"version":224,"summary_zh":225,"released_at":226},113963,"v8.14.0","## Added\n\n* Added Elasticsearch Serverless support in DataFrames (#690, contributed by @AshokChoudhary11) and `eland_import_hub_model` (#698)\n\n## Fixed\n\n* Fixed Python 3.8 support (#695, contributed by @bartbroere)\n* Fixed non `_source` fields missing from the results hits (#693, contributed by @bartbroere)\n\n\n","2024-06-10T12:02:10",{"id":228,"version":229,"summary_zh":230,"released_at":231},113964,"v8.13.1","## Added\n\n* Added support for HTTP proxies in `eland_import_hub_model` (#688)\n","2024-05-03T05:38:28",{"id":233,"version":234,"summary_zh":235,"released_at":236},113965,"v8.13.0","## Added\r\n\r\n* Added support for Python 3.11 (#681) \r\n* Added `eland.DataFrame.to_json` function (#661, contributed by @bartbroere)\r\n* Added override option to specify the model's max input size (#674)\r\n\r\n## Changed\r\n\r\n* Upgraded torch to 2.1.2 (#671)\r\n* Mirrored pandas' `lineterminator` instead of `line_terminator` in `to_csv` (#595, contributed by @bartbroere)\r\n\r\n\r\n","2024-03-27T14:27:54",{"id":238,"version":239,"summary_zh":240,"released_at":241},113966,"v8.12.1","## Fixed\n\n* Fix missing value support for XGBRanker (#654)\n","2024-02-01T06:51:46",{"id":243,"version":244,"summary_zh":245,"released_at":246},113967,"v8.12.0","## Added\n\n* Supported XGBRanker model (#649)\n* Accepted LTR (Learning to rank) model config when importing model (#645, #651)\n* Added LTR feature logger (#648)\n* Added ``prefix_string`` config option to the import model hub script (#642)\n* Made online retail analysis notebook runnable in Colab (#641)\n* Added new movie dataset to the tests (#646)\n\n\n","2024-01-19T08:44:29",{"id":248,"version":249,"summary_zh":250,"released_at":251},113968,"v8.11.1","## Added\n\n* Make demo notebook runnable in Colab (#630)\n\n## Changed\n\n* Bump Shap version to 0.43 (#636)\n\n## Fixed\n\n* Fix failed import of Sentence Transformer RoBERTa models (#637)\n","2023-11-22T10:57:29",{"id":253,"version":254,"summary_zh":255,"released_at":256},113969,"v8.11.0","## Added\n\n* Support E5 small multilingual model (#625)\n\n## Changed\n\n* Stream writes in `ed.DataFrame.to_csv()` (#579)\n* Improve memory estimation for NLP models (#568)\n\n## Fixed\n\n* Fixed deprecations in preparation of Pandas 2.0 support (#602, #603, contributed by @bartbroere)\n","2023-11-08T10:52:55",{"id":258,"version":259,"summary_zh":260,"released_at":261},113970,"v8.10.1","## Fixed\n\n* Fixed direct usage of TransformerModel (#619)\n","2023-10-11T10:57:45"]