elasticsearch,nest,.net,elasticsearch,Nest" /> elasticsearch,nest,.net,elasticsearch,Nest" />

有可能从普通的弹性搜索转移到官方的.net客户端NEST吗

有可能从普通的弹性搜索转移到官方的.net客户端NEST吗,.net,elasticsearch,nest,.net,elasticsearch,Nest,我目前正在使用PlainElastic作为.NET ElasticSearch客户端。 我考虑搬到官方的.NET客户端,Nest 有问题吗 NEST支持SSL吗 我们可以做常见的查询吗 如何进行公共聚合? 迁移到鸟巢需要很长时间吗 1.NEST支持SSL/TLS。只需在ConnectionSettings var pool = new SingleNodeConnectionPool(new Uri("https://localhost:9200")); var connectionSettin

我目前正在使用PlainElastic作为.NET ElasticSearch客户端。 我考虑搬到官方的.NET客户端,Nest 有问题吗

  • NEST支持SSL吗
  • 我们可以做常见的查询吗
  • 如何进行公共聚合? 迁移到鸟巢需要很长时间吗

  • 1.NEST支持SSL/TLS。只需在
    ConnectionSettings

    var pool = new SingleNodeConnectionPool(new Uri("https://localhost:9200"));
    var connectionSettings = new ConnectionSettings(pool);
    
    var client = new ElasticClient(connectionSettings);
    
    2.NEST支持Elasticsearch公开的所有API,包括整个查询DSL。一个例子

    client.Search<Conference>(s => s
        .Query(q => q
            .Bool(b => b
                .Should(sh => sh
                    .Match(m => m
                        .Field(f => f.Location)
                          .Query("Sydney")
                    ), sh => sh
                    .Match(m => m
                          .Field(f => f.Location)
                          .Query("Spektrum")
                          .Boost(2)
                    )
                )
                .Filter(fi => fi
                    .Term(t => t
                        .Field(f => f.Name.Suffix("raw"))
                        .Value("NDC")
                    )
                )
            )
        )
    );
    
    client.Search(s=>s
    .Query(q=>q
    .Bool(b=>b
    .Should(sh=>sh
    .Match(m=>m
    .Field(f=>f.Location)
    .Query(“悉尼”)
    ),sh=>sh
    .Match(m=>m
    .Field(f=>f.Location)
    .Query(“Spektrum”)
    .Boost(2)
    )
    )
    .Filter(fi=>fi
    .Term(t=>t
    .Field(f=>f.Name.Suffix(“原始”))
    .价值(“NDC”)
    )
    )
    )
    )
    );
    
    NEST具有和等功能,使构造查询更加容易。这是上一个带有运算符重载的查询

    client.Search<Conference>(s => s
        .Query(q => (q
            .Match(m => m
                .Field(f => f.Location)
                  .Query("Sydney")
            ) || q
            .Match(m => m
                  .Field(f => f.Location)
                  .Query("Spektrum")
                  .Boost(2)
            )) && +q
            .Term(t => t
                .Field(f => f.Name.Suffix("raw"))
                .Value("NDC")
            )
        )
    );
    
    client.Search(s=>s
    .Query(q=>(q
    .Match(m=>m
    .Field(f=>f.Location)
    .Query(“悉尼”)
    )| | q
    .Match(m=>m
    .Field(f=>f.Location)
    .Query(“Spektrum”)
    .Boost(2)
    ))&&+q
    .Term(t=>t
    .Field(f=>f.Name.Suffix(“原始”))
    .价值(“NDC”)
    )
    )
    );
    
    3.NEST支持所有聚合。下面是一个相当复杂的针对stackoverflow数据集的查询示例,查看自2015年6月29日创建的标记为“dnx”或“.net core”的问题

    对于这些问题,将在tags字段上执行一个测试,但只查看“dnx”和“.net core”标记。在每个学期区间中,执行一次将问题划分为1周的间隔,每个区间中的问题数量和问题编号分别执行一次

    var response = client.Search<Question>(s => s
        .Size(0)
        .Query(q => +q
            .Terms(m => m
                .Field(f => f.Tags)
                .Terms("dnx", ".net-core")
            ) && +q
            .DateRange(r => r
                .Field(f => f.CreationDate)
                .GreaterThan(new DateTime(2015, 06, 29))
            )
        )
        .Aggregations(a => a
            .Terms("tags", t => t
                .Field(f => f.Tags)
                .Include(@"dnx|\.net\-core")
                .Aggregations(sub => sub
                    .DateHistogram("weekly_questions", dh => dh
                        .Field(f => f.CreationDate)
                        .Interval("1w")
                        .Aggregations(sa => sa
                            .ValueCount("count_questions", vc => vc
                                .Field(f => f.Id)
                            )
                            .MovingAverage("questions", ma => ma
                                .BucketsPath("count_questions.value")    
                                .Window(12)
                                .Model(mo => mo
                                    .HoltWinters(hw => hw
                                        .Type(HoltWintersType.Additive)                                     
                                    )
                                )
                            )
                        )
                    )
                )
            )
        )
    );
    
    var response=client.Search(s=>s
    .尺寸(0)
    .Query(q=>+q
    .术语(m=>m
    .Field(f=>f.Tags)
    .术语(“dnx”,“.net核心”)
    )&&+q
    .DateRange(r=>r
    .字段(f=>f.CreationDate)
    .GreaterThan(新日期时间(2015年6月29日))
    )
    )
    .聚合(a=>a
    .术语(“标记”,t=>t
    .Field(f=>f.Tags)
    .包括(@“dnx\.net \-core”)
    .聚合(sub=>sub
    .DateHistogram(“每周问题”,dh=>dh
    .字段(f=>f.CreationDate)
    .间隔(“1w”)
    .聚合(sa=>sa
    .ValueCount(“计数问题”,vc=>vc
    .Field(f=>f.Id)
    )
    .MovingAverage(“问题”,ma=>ma
    .BucketsPath(“计数问题值”)
    .窗口(12)
    .Model(mo=>mo
    .Holtwiners(hw=>hw
    .类型(HoltwisterStype.添加剂)
    )
    )
    )
    )
    )
    )
    )
    )
    );