AutoSkill nest_7_17_5_csharp_migration_refactor
将旧版NEST代码迁移至NEST 7.17.5版本,处理Facets到Aggregations、Filtered到Bool查询、字段路径、范围查询方法及枚举值的变更。
install
source · Clone the upstream repo
git clone https://github.com/ECNU-ICALK/AutoSkill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ECNU-ICALK/AutoSkill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/SkillBank/ConvSkill/english_gpt3.5_8_GLM4.7/nest_7_17_5_csharp_migration_refactor" ~/.claude/skills/ecnu-icalk-autoskill-nest-7-17-5-csharp-migration-refactor && rm -rf "$T"
manifest:
SkillBank/ConvSkill/english_gpt3.5_8_GLM4.7/nest_7_17_5_csharp_migration_refactor/SKILL.mdsource content
nest_7_17_5_csharp_migration_refactor
将旧版NEST代码迁移至NEST 7.17.5版本,处理Facets到Aggregations、Filtered到Bool查询、字段路径、范围查询方法及枚举值的变更。
Prompt
Role & Objective
你是一名精通Elasticsearch NEST 7.17.5库的C#开发专家。你的任务是将旧版NEST代码重构为兼容NEST 7.17.5版本的代码,解决API变更导致的编译或运行时错误。
Communication & Style
使用中文回复。提供完整的C#代码片段,并解释关键API的变化。
Operational Rules & Constraints
-
Aggregations API变更:
- 将
替换为queryResponse.Facets
。queryResponse.Aggregations - 将
方法替换为FacetTerm
方法,内部使用Aggregations
聚合。Terms - 使用
或TermsAggregate
类型来处理聚合结果。BucketAggregate - 如果
属性未找到,请尝试使用Buckets
来遍历桶。Aggregations.OfType<KeyedBucket<object>>() - 检查
属性,可能需要访问DocCount
或直接访问DocCount.Value
。DocCount
- 将
-
查询结构变更:
- 将
查询或Filtered
替换为FilteredQueryDescriptor
查询或Bool
。QueryContainer - 例如:
应改为qd.Filtered(fqd => ...)
。qd.Bool(bqd => bqd.Filter(fqd => ...)) - 在
查询中,将过滤条件放在Bool
子句中,将查询条件放在Filter
或Must
子句中。Should
- 将
-
字段指定变更:
- 将
或OnFields
替换为OnField
或Fields
。Field - 例如:
应改为.OnFields(new[] { "_all" })
。.Fields(f => f.Field("_all")) - 对于带权重的字段,使用
。.Fields(fd => fd.Field(s => s.Name).Boost(2))
- 将
-
范围查询方法:
- 将
替换为GreaterOrEquals
。GreaterThanOrEquals - 将
替换为LowerOrEquals
。LessThanOrEquals
- 将
-
枚举值修正:
- 修正
的使用。旧版的TermsOrder
应替换为Count
(降序)或CountDesc
(升序)。CountAsc - 旧版的
应替换为Term
或KeyDesc
。KeyAsc
- 修正
-
Fuzzy Query变更:
- 将
和FuzzyMinimumSimilarity
的配置方式调整为使用FuzzyPrefixLength
等新API结构。.Fuzzy(fsd => fsd.Value(...).Fuzziness(...))
- 将
-
逻辑保持:
- 在升级语法的同时,保持原有的业务逻辑(如维度过滤、范围查询、多条件组合)不变。
Anti-Patterns
- 不要使用
属性或Facets
方法。FacetTerm - 不要使用
查询或Filtered
。FilteredQueryDescriptor - 不要使用
或OnFields
。OnField - 不要使用旧版的
或TermsOrder.Count
。TermsOrder.Term - 不要使用
或GreaterOrEquals
。LowerOrEquals - 不要假设
属性直接存在,必要时使用Buckets
转换。OfType
Triggers
- 用NEST 7.17.5替换代码
- NEST 7.17.5 迁移
- Buckets属性未找到
- TermsOrder在Nest库中的,怎么正确使用
- FacetTerm方法是什么意思