当前位置: 首页 > 面试题库 >

如何将嵌套类型与NEST客户端一起用于Elastic Search

周良弼
2023-03-14
问题内容

在尝试在Elastic Search中的文档上使用统计方面时,我遇到了一些问题。这导致在Elastic Search google组上发布了以下帖子-
请参阅https://groups.google.com/forum/#!topic/elasticsearch/wNjrnAC_KOY。我试图在有关文档中使用嵌套类型的答案中应用建议,以在collections属性上提供不同的总和(请参阅https://groups.google.com/forum/#!topic/elasticsearch/wNjrnAC_KOY)

那就是我会有许多MyType实例和MyItem集合。MyItem的某些集合将具有匹配数量的实例,即第一个文档可能具有两个myitem实例,每个实例的数量均为100。如果没有嵌套类型,我不相信统计方面会汇总每个数量,因为它们不是唯一的。

因此,我创建了一个文档结构(类似于以下内容)并填充了索引。在填充索引之前,我已使用以下代码来创建嵌套文档。

client.MapFromAttributes<Page>();


[ElasticType(Name="page", DateDetection = true, NumericDetection = true, SearchAnalyzer = "standard",IndexAnalyzer = "standard")]
    public class MyType
    {
        public int TypeId { get; set; }
        public string Name { get; set; }
        public ANotherType AnotherProperty { get; set; }
        public DateTime Created { get; set; }

        [ElasticProperty(Type = FieldType.nested, Name="mycollection")]
        public List<MyItem> MyItems { get; 
    }

    public class MyItem
    {
        public decimal Amount {get;set;}
    }

但是,当我通过巢状API运行以下查询时,没有任何结果。

query.Index("pages")
        .Type("page")
        .From(0)
        .Size(100)
           .FacetStatistical("TotalAmount", x => x.Nested("donations")
           .OnField("amount")));

此外,我还通过Chrome插件PostMan尝试了以下方法:

{
   "facets": {
      "test": {
         "statistical": {
            "field": "amount"
         },
         "nested": "mycollection"
      }
   },
   "size":0
}'

并得到以下响应:

“ ..facet嵌套路径[mycollection]未嵌套..”

任何对此的想法将是巨大的。

提姆


问题答案:

尝试按照以下步骤映射对象

client.MapFluent<MyType>(m=>m
    .MapFromAttributes()
    .NestedObject<MyItem>(no=>no
        .Name(p=>p.MyItems.First())
        .Dynamic()
        .Enabled()
        .IncludeInAll()
        .IncludeInParent()
        .IncludeInRoot()
        .MapFromAttributes()
        .Path("full")
        .Properties(pprops => pprops
            .String(ps => ps
                .Name(p => p.FirstName)
                .Index(FieldIndexOption.not_analyzed)
            )
            //etcetera
        )
    )
);

client.MapFromAttributes()功能非常有限,很可能会在1.0版本中删除。注释属性名称非常好,但是很快就无法表达。mapfluent调用中的MapFromAttributes()仍然是一种将int键入为int,将float键入为float,将DateTime键入为日期等的好方法。



 类似资料:
  • 我想使用Apache连接器和Jersey 2.3客户端进行HTTPS连接。 我尝试了以下方法: 但是,sslContext似乎被忽略,因为服务器的证书被拒绝为不受信任(sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径) 如果删除“.withConfig(clientConfig)”部分,SSL连接可

  • 问题内容: 我有一个这样的文档模型: 一个客户可以有0个,1个或多个订单,一个订单可以有0个,1个或多个orderLines (这是我为这个问题创建的模型,因为我认为这是每个人都可以理解的数据,因此,如果发现任何错误,请让我知道,但不要让他们分散我的实际问题) 我想使用NEST创建一个查询,该查询选择一个(或所有)具有customer.id特定值的客户,但前提是他们至少具有一个具有特定articl

  • 问题内容: 我正在使用NEST库与ElasticSearch进行交互,并且试图找到一种基于非类型数据构建索引类型/嵌套对象的方法。该类型具有以下基本结构。 我想为NestedType的每个实例创建一个嵌套的对象/类型。因此,如果有两个NestedType实例,则将有两个嵌套对象。我可以从DynamicObject继承NestedType,将字典变成NEST然后正确映射的“真实”属性(即,将每个字典

  • 问题内容: 如何使用Mpdreamz / NEST Elasticsearch客户端基于嵌套字段的属性列出构面? 我检查了Nest文档,但不清楚如何执行。 这是我尝试的代码: 由于构面,我得到: 体裁(842) 98(47) 51(30) 24(29) 46(28) 虽然我希望得到类似的东西: 类型1(842) 体裁2(47) 类型3(30) 类型4(29) 类型5(28) 我做错了什么?在哪里检

  • 问题内容: 这是课程: 现在,我试图从类中“反射”此方法: 问题答案: 只有一个。 另一种选择是。 其他原语也是如此。

  • 我有4个片段,其中一个片段中有一个viewpager和一个不同的类,我用3个其他片段定义了viewpager的适配器,第一次打开此片段时,所有子片段都正确显示在viewpager中,但当我切换(使用transaction.replace)到另一个片段并再次返回时,子片段消失了,我不能使用ChildFragmentManager,因为它在代码中显示错误(ChildFragmentManager无法解