概述
Microsoft 365连接器提供从Microsoft 365服务(OneDrive、OneNote、Teams、SharePoint)获取数据并注册到 Fess 索引的功能。
此功能需要 fess-ds-microsoft365 插件。
支持的服务
OneDrive: 用户云端硬盘、组云端硬盘、共享文档
OneNote: 笔记本(站点、用户、组)
Teams: 频道、消息、聊天
SharePoint Document Libraries: 文档库元数据
SharePoint Lists: 列表和列表项
SharePoint Pages: 站点页面、新闻文章
前提条件
需要安装插件
需要Azure AD应用程序注册
需要Microsoft Graph API权限设置和管理员同意
Java 21以上、Fess 15.2.0以上
插件安装
方法1: 直接放置JAR文件
方法2: 从源代码构建
安装后,请重启 Fess。
配置方法
从管理界面的「爬虫」→「数据存储」→「新建」进行配置。
基本设置
| 项目 | 设置示例 |
|---|---|
| 名称 | Microsoft 365 OneDrive |
| 处理器名称 | OneDriveDataStore / OneNoteDataStore / TeamsDataStore / SharePointDocLibDataStore / SharePointListDataStore / SharePointPageDataStore |
| 启用 | 开 |
参数设置(通用)
通用参数列表
| 参数 | 必需 | 说明 |
|---|---|---|
tenant | 是 | Azure AD租户ID |
client_id | 是 | 应用注册的客户端ID |
client_secret | 是 | 应用注册的客户端密钥 |
number_of_threads | 否 | 并行处理线程数(默认: 1) |
ignore_error | 否 | 出错时继续处理(默认: false) |
max_content_length | 否 | 获取内容的最大大小(默认: -1,无限制) |
cache_size | 否 | 用户/组信息的缓存大小(默认: 10000) |
proxy_host | 否 | HTTP代理主机 |
proxy_port | 否 | HTTP代理端口 |
proxy_username | 否 | 代理认证用户名 |
proxy_password | 否 | 代理认证密码 |
Azure AD应用程序注册
1. 在Azure Portal注册应用程序
在 https://portal.azure.com 打开Azure Active Directory:
点击「应用注册」→「新注册」
输入应用程序名称
选择支持的账户类型
点击「注册」
2. 创建客户端密钥
在「证书和密钥」中:
点击「新建客户端密钥」
设置描述和有效期
复制密钥值(之后无法再查看,请注意)
3. 添加API权限
在「API权限」中:
点击「添加权限」
选择「Microsoft Graph」
选择「应用程序权限」
添加所需权限(参见下文)
点击「授予管理员同意」
各数据存储所需权限
OneDriveDataStore
必需权限:
Files.Read.All
条件权限:
User.Read.All- user_drive_crawler=true 时Group.Read.All- group_drive_crawler=true 时Sites.Read.All- shared_documents_drive_crawler=true 时
OneNoteDataStore
必需权限:
Notes.Read.All
条件权限:
User.Read.All- user_note_crawler=true 时Group.Read.All- group_note_crawler=true 时Sites.Read.All- site_note_crawler=true 时
TeamsDataStore
必需权限:
Team.ReadBasic.AllGroup.Read.AllChannel.ReadBasic.AllChannelMessage.Read.AllChannelMember.Read.AllUser.Read.All
条件权限:
Chat.Read.All- 指定chat_id时Files.Read.All- append_attachment=true 时
脚本设置
OneDrive
可用字段:
file.name- 文件名file.description- 文件描述file.contents- 文本内容file.mimetype- MIME类型file.filetype- 文件类型file.created- 创建时间file.last_modified- 最后更新时间file.size- 文件大小file.web_url- 在浏览器中打开的URLfile.url- 文件URLfile.id- 云端硬盘项目IDfile.ctag- 变更标签(cTag)file.etag- 实体标签(eTag)file.webdav_url- WebDAV URLfile.parent_id- 父文件夹的IDfile.parent_name- 父文件夹名称file.parent_path- 父文件夹路径file.roles- 访问权限
Note
除上述字段外,还可以使用 file.createdby_user 、 file.last_modifiedby_user 、 file.image 、 file.video 、 file.special_folder 等Microsoft Graph元数据字段。
OneNote
可用字段:
notebook.name- 笔记本名称notebook.contents- 节和页面的整合内容notebook.size- 内容大小(字符数)notebook.created- 创建时间notebook.last_modified- 最后更新时间notebook.web_url- 在浏览器中打开的URLnotebook.roles- 访问权限
Teams
可用字段:
message.title- 消息标题message.content- 消息内容message.body- 消息正文(包含HTML的原始数据)message.subject- 消息主题message.summary- 消息摘要message.importance- 重要程度message.from- 发送者信息message.created_date_time- 创建时间message.last_modified_date_time- 最后更新时间message.last_edited_date_time- 最后编辑时间message.deleted_date_time- 删除时间message.web_url- 在浏览器中打开的URLmessage.id- 消息IDmessage.etag- 实体标签message.locale- 语言区域message.chat_id- 聊天IDmessage.reply_to_id- 被回复消息的IDmessage.channel_identity- 频道标识信息(团队ID·频道ID)message.mentions- 提及信息message.attachments- 附件信息message.replies- 回复消息message.hosted_contents- 内联内容(图像等)message.roles- 访问权限
顶层字段(仅在频道消息时设置):
team- 团队(Microsoft Graph的Group对象)channel- 频道(Microsoft Graph的Channel对象)parent- 父消息(回复消息时设置)
各数据存储的附加参数
OneDrive
OneNote
Teams
SharePoint Document Libraries
SharePoint Lists
SharePoint Pages
使用示例
爬取OneDrive全部云端硬盘
参数:
脚本:
爬取特定团队的Teams消息
参数:
脚本:
故障排除
认证错误
症状: Authentication failed 或 Insufficient privileges
确认事项:
确认租户ID、客户端ID、客户端密钥是否正确
确认在Azure Portal中是否授予了所需的API权限
确认是否授予了管理员同意
确认客户端密钥的有效期
API速率限制错误
症状: 429 Too Many Requests
解决方法:
减少 ``number_of_threads``(设置为1或2)
增加爬取间隔
设置
ignore_error=true继续处理
无法获取数据
症状: 爬取成功但文档数为0
确认事项:
确认目标数据是否存在
确认API权限是否正确设置
确认用户/组云端硬盘爬虫设置
在日志中确认错误信息
大量数据爬取
解决方法:
分割成多个数据存储(按站点、云端硬盘等)
通过计划设置分散负载
调整
number_of_threads进行并行处理只爬取特定文件夹/站点
参考信息
数据存储连接器概述 - 数据存储连接器概述
Google Workspace连接器 - Google Workspace连接器
数据存储爬取 - 数据存储配置指南