c# - 使用NEST在ElasticSearch的IEnumerable属性上配置分析器的问题

标签 c# elasticsearch nest

假设我有

class Product
{
  string name;
  List<Order> orders;
}
class Order
{
  string name;
}

如果我尝试将分析器映射到产品名称,则可以使用,但不能用于Order.name
//This work and adds the analyzer on the mapping list.
var resp = client.Map<Product>(map => map
                        .Properties(props => props
                            .String(s =>s
                                .Name(p => p.Name)
                                .IndexAnalyzer("normalize")
                            )
                       ));
//This does not.
var resp = client.Map<Product>(map => map
                        .Properties(props => props
                            .String(s =>s
                                .Name(p => p.orders.First().Name)
                                .IndexAnalyzer("normalize")
                            )
                       ));

我是在做错什么,还是这是个错误?

更多信息:
这些类仅是显示问题的示例。
如果我在变量上添加[ElasticProperty(Analyzer =“normalize”)],它将起作用。

实际上,设置看起来像BaseProdcuts和BaseProductis的Product Inherists是拥有列表的人

最佳答案

回答here时,.Name(p => p.Orders.First().Name)告诉ES将“名称”字段映射到“产品”文档上。而是要映射到“订单”上的“名称”字段,该字段是“产品”文档中的一个数组。

尝试以下方法:

client.Map<Product>(m => m
    .Properties(pp => pp
        // Map Product.Name
        .String(s => s
            .Name(p => p.Name)
            .IndexAnalyzer("normalize")
        )
        // Map Product.Orders.Name
        .Object<List<Order>>(o => o
            .Name(p => p.Orders)
            .Properties(op => op
                .String(s => s
                    .Name(os => os.First().Name)
                    .IndexAnalyzer("normalize"))))
        ));

关于c# - 使用NEST在ElasticSearch的IEnumerable属性上配置分析器的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23607174/

相关文章:

elasticsearch - ElasticSearch中的多重搜索无法正常工作

elasticsearch - 使用动态类型和属性列表创建索引

c# - Nest 无法使用 EF6/MVC5 处理大型数据库模型

c# - 如何使用自定义分析器创建ElasticSearch NEST v.5客户端的索引?

c# - 什么控制 .NET 中的 CurrencyPositivePattern

c# - 如何将 C# 泛型类型传递给另一个类

c# - 基于.Net 的开源搜索引擎?

c# - 如何为泛型方法编写接口(interface)

python - 在 Elasticsearch 中过滤特定字段上的查询

javascript - 使用 d3.js 对多个字段进行分组