Loading...
Loading...
Compare original and translation side by side
schema.xmlschema.xmlhttps://knowledge-mcp.global.api.awsaws_knowledge_search(query, topic)aws_opensearch_regional_availability(region)https://knowledge-mcp.global.api.awsaws_knowledge_search(query, topic)aws_opensearch_regional_availability(region)facts.stakeholder_rolefacts.stakeholder_rolefacts.solr_versionTrieIntFieldTrieLongFieldfacts.solr_versionTrieIntFieldTrieLongFieldschema.xmlGET /solr/<collection>/schemaconvert_schema_xmlconvert_schema_jsonfacts.solr_versionschema.xmlschema.xmlcreate_opensearch_indexOPENSEARCH_URLOPENSEARCH_USEROPENSEARCH_PASSWORDhttp://localhost:9200schema.xmlGET /solr/<collection>/schemaconvert_schema_xmlconvert_schema_jsonfacts.solr_versionschema.xmlschema.xmlcreate_opensearch_indexOPENSEARCH_URLOPENSEARCH_USEROPENSEARCH_PASSWORDhttp://localhost:9200facts.incompatibilitiescategoryseveritydescriptionrecommendation<copyField>copy_tosolr.ICUCollationFieldsolr.EnumFieldsolr.ExternalFileFieldsolr.PreAnalyzedFieldsolr.SortableTextField<analyzer><tokenizer><filter>dynamic_templates_sourcestored="true"indexed="false"_sourcedocValues="true"doc_values{!parent}{!child}TrieIntFieldTrieLongFieldfacts.solr_version _version_facts.incompatibilitiescategoryseveritydescriptionrecommendation<copyField>copy_tosolr.ICUCollationFieldsolr.EnumFieldsolr.ExternalFileFieldsolr.PreAnalyzedFieldsolr.SortableTextField<analyzer><tokenizer><filter>dynamic_templates_sourcestored="true"indexed="false"_sourcedocValues="true"doc_values{!parent}{!child}TrieIntFieldTrieLongFieldfacts.solr_version_version_convert_queryfacts.incompatibilitiescategory: "query"Apply version-specific awareness: ifis 6.x or earlier, Streaming Expressions and the Graph query parser may not be present at all — skip those checks and note the version. eDisMax was available from Solr 3.x but matured significantly in 4.x–6.x; flag any eDisMax-specific parameters accordingly. If 7.x+, all items in the table below are relevant.facts.solr_version
| Solr feature | Severity | OpenSearch situation |
|---|---|---|
eDismax | Behavioral | No direct equivalent; approximate with |
eDismax | Behavioral | Use |
| Breaking | Not supported; restructure as nested documents or application-side join. |
| Behavioral | Use |
| Solr Streaming Expressions | Unsupported | No equivalent; move aggregation logic to the application layer or use OpenSearch aggregations. |
| Unsupported | No equivalent in OpenSearch. |
Spatial | Behavioral | Use |
| Behavioral | Use |
| Facet pivots | Behavioral | Use nested |
| Behavioral | Use |
| Solr relevance TF-IDF (classic) | Behavioral | OpenSearch defaults to BM25; scores will differ. Configurable via |
similarityconvert_queryfacts.incompatibilitiescategory: "query"应用版本特定认知:如果是6.x或更早版本,Streaming Expressions和Graph查询解析器可能根本不存在 — 跳过这些检查并说明版本。eDisMax从Solr 3.x开始可用,但在4.x–6.x中显著成熟;相应标记任何eDisMax特定参数。如果是7.x+,下表中的所有项均适用。facts.solr_version
| Solr特性 | 严重程度 | OpenSearch对应情况 |
|---|---|---|
eDismax的 | 行为差异 | 无直接等效功能;可在 |
eDismax的 | 行为差异 | 使用 |
| 破坏性 | 不支持;重构为嵌套文档或在应用层实现连接。 |
| 行为差异 | 使用Search API折叠参数实现 |
| Solr Streaming Expressions | 不支持 | 无等效功能;将聚合逻辑移至应用层或使用OpenSearch聚合。 |
| 不支持 | OpenSearch中无等效功能。 |
空间查询 | 行为差异 | 使用 |
| MoreLikeThis处理器 | 行为差异 | 使用 |
| 分面透视 | 行为差异 | 使用嵌套 |
| 行为差异 | 在OpenSearch中使用 |
| Solr相关性TF-IDF(经典) | 行为差异 | OpenSearch默认使用BM25;评分会不同。可通过 |
similaritySearchHandlerUpdateRequestHandlersolrconfig.xmlQParserPluginSearchComponentTokenFilterFactoryUpdateRequestProcessorChain| Solr customization | OpenSearch equivalent / approach |
|---|---|
Custom | Use the Search API with a custom request body; complex handler logic moves to the application layer or an ingest pipeline. |
| Replace with an Ingest Pipeline using built-in or custom processors. |
Custom | Implement equivalent logic in Query DSL (e.g. |
Custom | Re-express as a custom analyzer definition in the index settings using the equivalent built-in filter, or implement a custom plugin via the OpenSearch plugin SDK. |
| Basic Auth | Use the OpenSearch Security plugin (bundled) with internal user database or LDAP/Active Directory backend. |
| Kerberos | OpenSearch Security supports Kerberos via the |
| PKI / mutual TLS | Configure node-to-node and client TLS in |
| Rule-Based Authorization Plugin | Map to OpenSearch Security roles and role mappings. |
| Air-gapped / offline deployment | OpenSearch supports fully offline installation; use the tarball or RPM/DEB packages and mirror the plugin registry internally. |
| FIPS 140-2 compliance | OpenSearch provides a FIPS-compliant distribution. |
| Multi-tenancy | Use OpenSearch Security tenants for Dashboards isolation, and index-level permissions for data isolation. |
| Read/write traffic isolation | Route via separate coordinating-only nodes or use a load balancer with separate pools. |
facts.customizationssolrconfig.xmlSearchHandlerUpdateRequestHandlerQParserPluginSearchComponentTokenFilterFactoryUpdateRequestProcessorChain| Solr自定义项 | OpenSearch等效方案/方法 |
|---|---|
自定义 | 使用Search API及自定义请求体;复杂处理器逻辑移至应用层或摄入管道。 |
| 使用摄入管道替代,内置或自定义处理器均可。 |
自定义 | 在Query DSL中实现等效逻辑(如 |
自定义 | 在索引设置中使用等效的内置过滤器重新定义为自定义分析器,或通过OpenSearch插件SDK实现自定义插件。 |
| Basic Auth | 使用OpenSearch Security插件(已捆绑),搭配内部用户数据库或LDAP/Active Directory后端。 |
| Kerberos | OpenSearch Security通过 |
| PKI / 双向TLS | 在 |
| 基于规则的授权插件 | 映射到OpenSearch Security的角色和角色映射。 |
| 隔离/离线部署 | OpenSearch支持完全离线安装;使用tarball或RPM/DEB包并在内部镜像插件注册表。 |
| FIPS 140-2合规 | OpenSearch提供符合FIPS标准的发行版。 |
| 多租户 | 使用OpenSearch Security的租户实现Dashboards隔离,使用索引级权限实现数据隔离。 |
| 读写流量隔离 | 通过单独的仅协调节点路由,或使用带有单独池的负载均衡器。 |
facts.customizations/select/updateSessionState.add_client_integration| Field | What to capture |
|---|---|
| The library, framework, or component name (e.g. "SolrJ", "pysolr", "React Search UI") |
| One of: |
| How it is currently used (endpoints called, features relied on) |
| The concrete change required for OpenSearch |
| Solr client / UI | Kind | Migration action |
|---|---|---|
| SolrJ | library | Replace with opensearch-java; update endpoint URLs and request/response models. |
| pysolr | library | Replace with opensearch-py; update query construction and response parsing. |
| solr-ruby / rsolr | library | Replace with opensearch-ruby. |
| Custom HTTP client | http | Update base URL from |
| Solr Admin UI | ui | Migrate to OpenSearch Dashboards; index management, query dev tools, and monitoring are all available. |
| Velocity / Solr response writer templates | ui | Remove; OpenSearch returns JSON natively — render in the application layer. |
| React/Vue/Angular with Solr-specific widgets | ui | Replace Solr-specific components with OpenSearch-compatible equivalents or generic REST-based components. |
| Solr SolrJ CloudSolrClient (SolrCloud) | library | Replace with OpenSearch client pointed at the cluster load balancer; no ZooKeeper dependency. |
migration_action/select/updateSessionState.add_client_integration| 字段 | 捕获内容 |
|---|---|
| 库、框架或组件名称(例如"SolrJ"、"pysolr"、"React Search UI") |
| 以下类型之一: |
| 当前使用方式(调用的端点、依赖的功能) |
| 迁移至OpenSearch所需的具体变更 |
| Solr客户端/UI | 类型 | 迁移操作 |
|---|---|---|
| SolrJ | library | 替换为opensearch-java;更新端点URL及请求/响应模型。 |
| pysolr | library | 替换为opensearch-py;更新查询构造及响应解析逻辑。 |
| solr-ruby / rsolr | library | 替换为opensearch-ruby。 |
| 自定义HTTP客户端 | http | 将基础URL从 |
| Solr管理UI | ui | 迁移至OpenSearch Dashboards;索引管理、查询开发工具及监控功能均可用。 |
| Velocity / Solr响应写入器模板 | ui | 移除;OpenSearch原生返回JSON — 在应用层进行渲染。 |
| 带有Solr特定组件的React/Vue/Angular应用 | ui | 将Solr特定组件替换为兼容OpenSearch的组件或通用REST组件。 |
| Solr SolrJ CloudSolrClient(SolrCloud) | library | 替换为指向集群负载均衡器的OpenSearch客户端;无ZooKeeper依赖。 |
migration_actiongenerate_reportfacts.solr_versionfacts.incompatibilitiesClientIntegrationgenerate_reportfacts.solr_versionfacts.incompatibilitiesClientIntegrationsession_idsession_idsessions/<session_id>.mdsessions/<session_id>.mdsessions/<session_id>.mdsessions/<session_id>.mdundefinedundefined| Step | Name | Status |
|---|---|---|
| 0 | Stakeholder Identification | ✅ Complete / 🔄 In Progress / ⬜ Not Started |
| 1 | Solr Version | ... |
| 2 | Schema Acquisition | ... |
| 3 | Schema Review & Incompatibility Analysis | ... |
| 4 | Query Translation | ... |
| 5 | Solr Customizations | ... |
| 6 | Cluster & Infrastructure Assessment | ... |
| 7 | Client & Front-end Integration | ... |
| 8 | Migration Report | ... |
| 步骤 | 名称 | 状态 |
|---|---|---|
| 0 | 利益相关者识别 | ✅ 已完成 / 🔄 进行中 / ⬜ 未开始 |
| 1 | Solr版本 | ... |
| 2 | 模式获取 | ... |
| 3 | 模式审核与不兼容性分析 | ... |
| 4 | 查询转换 | ... |
| 5 | Solr自定义项 | ... |
| 6 | 集群与基础设施评估 | ... |
| 7 | 客户端与前端集成 | ... |
| 8 | 迁移报告 | ... |
| Severity | Category | Description | Recommendation |
|---|---|---|---|
| Breaking | ... | ... | ... |
| Behavioral | ... | ... | ... |
| Unsupported | ... | ... | ... |
| 严重程度 | 类别 | 描述 | 建议方案 |
|---|---|---|---|
| 破坏性 | ... | ... | ... |
| 行为差异 | ... | ... | ... |
| 不支持 | ... | ... | ... |
| Name | Kind | Current Usage | Migration Action |
|---|---|---|---|
| ... | ... | ... | ... |
| 名称 | 类型 | 当前使用方式 | 迁移操作 |
|---|---|---|---|
| ... | ... | ... | ... |
undefinedundefinedfacts.incompatibilitiesSessionState.add_client_integrationfacts.incompatibilitiesSessionState.add_client_integrationsession_idundefinedsession_idundefined
Via MCP:
```json
{ "tool": "handle_message", "arguments": { "message": "Let's continue", "session_id": "my-project-migration" } }SessionStatesessions/<session_id>.md
通过MCP:
```json
{ "tool": "handle_message", "arguments": { "message": "Let's continue", "session_id": "my-project-migration" } }SessionStatesessions/<session_id>.mdacme-solr-migrationprojectname-prod-clusterteam-search-migration-2025acme-solr-migrationprojectname-prod-clusterteam-search-migration-2025from scripts.storage import FileStorage
storage = FileStorage("sessions")from scripts.storage import FileStorage
storage = FileStorage("sessions")undefinedundefinedFileStoragesessions/<session_id>.jsonsessions/<session_id>.mdFileStoragesessions/<session_id>.jsonsessions/<session_id>.mdstorage.delete("my-project-migration")session_idstorage.delete("my-project-migration")session_idreferencesreferences| File | Content Summary | Use When… |
|---|---|---|
| Field type mappings, | Converting a Solr schema to an OpenSearch mapping (Step 2); answering field type questions |
| Solr Standard, DisMax, and eDisMax query syntax translated to OpenSearch Query DSL | Translating Solr queries (Step 4); explaining query parser differences |
| Tokenizers, token filters, char filters, and analyzer chain migration | Migrating custom analyzers; replicating Solr text analysis behavior |
| Synonym handling, language-specific analyzers, and multilingual index strategies | Migrating |
| SolrCloud vs. OpenSearch cluster architecture, ZooKeeper removal, sharding, replication, and document identity | Explaining cluster topology differences; planning infrastructure migration |
| Data Import Handler (DIH), BlockJoin, function queries, and other Solr-specific features with no direct OpenSearch equivalent | Identifying feature gaps; recommending migration strategies for legacy Solr features |
| Joins, Streaming Expressions, SpellCheck, MoreLikeThis, custom request handlers, atomic update modifiers, | Same as above — continuation covering additional legacy features and indexing-level gaps |
| Side-by-side compatibility ratings (✅/⚠️/❌) across schema, query parsers, search components, analysis, indexing, and cluster operations | Quick compatibility lookup; scoping migration effort; identifying blockers |
| | Migrating |
| Known behavioral differences between Solr query parsers and OpenSearch Query DSL: default operator, fuzzy scale, date math, scoring, highlighting, sorting, deep pagination, Solr-only query parsers ( | Debugging query result differences; validating query parity after migration; identifying unsupported query parsers |
| Node roles, shard sizing formulas, JVM/heap tuning, bulk indexing settings, cache configuration, hardware recommendations, and monitoring metrics | Sizing a new OpenSearch cluster; performance tuning; capacity planning (Step 3 / DevOps stakeholder) |
| 文件 | 内容摘要 | 适用场景… |
|---|---|---|
| 字段类型映射、 | 将Solr模式转换为OpenSearch映射(步骤2);回答字段类型相关问题 |
| Solr Standard、DisMax和eDisMax查询语法转换为OpenSearch Query DSL | 转换Solr查询(步骤4);解释查询解析器差异 |
| 分词器、令牌过滤器、字符过滤器及分析链迁移 | 迁移自定义分析器;复制Solr文本分析行为 |
| 同义词处理、特定语言分析器及多语言索引策略 | 迁移 |
| SolrCloud与OpenSearch集群架构对比、ZooKeeper移除、分片、复制及文档标识 | 解释集群拓扑差异;规划基础设施迁移 |
| Data Import Handler(DIH)、BlockJoin、函数查询及其他Solr特定功能(无OpenSearch直接等效功能) | 识别功能缺口;为Solr遗留功能推荐迁移策略 |
| 连接、Streaming Expressions、拼写检查、MoreLikeThis、自定义请求处理器、原子更新修饰符、 | 同上 — 涵盖其他遗留功能及索引级缺口的续篇 |
| 模式、查询解析器、搜索组件、分析、索引及集群运维方面的并排兼容性评级(✅/⚠️/❌) | 快速兼容性查询;评估迁移工作量;识别障碍 |
| | 迁移 |
| Solr查询解析器与OpenSearch Query DSL之间的已知行为差异:默认运算符、模糊比例、日期计算、评分、高亮、排序、深度分页、Solr独有的查询解析器( | 调试查询结果差异;迁移后验证查询一致性;识别不支持的查询解析器 |
| 节点角色、分片规格公式、JVM/堆调优、批量索引设置、缓存配置、硬件建议及监控指标 | 规划新OpenSearch集群规格;性能调优;容量规划(步骤3 / DevOps利益相关者) |
references/06-feature-compatibility-matrix.md01-schema-migration.md03-analysis-pipelines.md04-architecture.md09-sizing-and-performance.md07-solrconfig-migration.md01-schema-migration.md02-query-translation.md03-analysis-pipelines.md08-query-behavior-edge-cases.mdreferences/06-feature-compatibility-matrix.md01-schema-migration.md03-analysis-pipelines.md04-architecture.md09-sizing-and-performance.md07-solrconfig-migration.md01-schema-migration.md02-query-translation.md03-analysis-pipelines.md08-query-behavior-edge-cases.mdsession_idSessionStatefacts.solr_versionfacts.incompatibilitiesSessionState.add_incompatibilityreferences/references/06-feature-compatibility-matrix.mdsession_idSessionStatefacts.solr_versionfacts.incompatibilitiesSessionState.add_incompatibilityreferences/references/06-feature-compatibility-matrix.mdSessionState| Field | Type | Purpose |
|---|---|---|
| | Unique session identifier |
| | Full conversation turns |
| | Discovered migration facts (e.g. |
| | Current workflow step (0 = not started; advances forward only) |
| | All incompatibilities found, with |
| | Client-side and front-end integrations collected in Step 7, with |
SessionState| 字段 | 类型 | 用途 |
|---|---|---|
| | 唯一会话标识符 |
| | 完整对话轮次 |
| | 已发现的迁移信息(例如 |
| | 当前流程步骤(0 = 未开始;仅向前推进) |
| | 所有已发现的不兼容性,包含 |
| | 步骤7中收集的客户端及前端集成,包含 |
InMemoryStorageFileStorage(base_path)StorageBackend_save_raw_load_rawdeletelist_sessionsInMemoryStorageFileStorage(base_path)StorageBackend_save_raw_load_rawdeletelist_sessionsimport sys
import osimport sys
import osundefinedundefinedpip install -e ".kiro/skills/solr-to-opensearch[mcp]"
python .kiro/skills/solr-to-opensearch/scripts/mcp_server.py.kiro/settings/mcp.json{
"mcpServers": {
"solr-to-opensearch": {
"command": "python3",
"args": [".kiro/skills/solr-to-opensearch/scripts/mcp_server.py"],
"disabled": false,
"autoApprove": []
}
}
}pip install -e ".kiro/skills/solr-to-opensearch[mcp]"
python .kiro/skills/solr-to-opensearch/scripts/mcp_server.py.kiro/settings/mcp.json{
"mcpServers": {
"solr-to-opensearch": {
"command": "python3",
"args": [".kiro/skills/solr-to-opensearch/scripts/mcp_server.py"],
"disabled": false,
"autoApprove": []
}
}
}sessions/<session_id>.jsonsessions/<session_id>.mdsessions/<session_id>.jsonsessions/<session_id>.md