c# - 有什么方法可以将JSON查询转换为Elasticsearch Nest搜索查询吗?

标签 c# json elasticsearch nest

我正在尝试将JSON查询转换为elasticsearch查询,但失败了。
我的查询是对数据进行分组(汇总)。

{
"aggs":{
   "ResultCount":{
    "terms":{
              "field":"type"
            },
    "aggs":{
      "hits":{
        "top_hits":{
                "_source":{
                  "include":[
                                "year",
                                "type"
                            ]
                          }
                    }
                }
            }
        }
    }
}

我试过的代码:
var result = Client.Search<ModelClass>(s => s
            .Index("myIdx")
            .Type("myType")
            .Aggregations(a => a
                .Terms("ResultCount", t => t
                    .Field(p => p.year)
                )
            )
        );

如有可能,请提供帮助。在此先谢谢您。

最佳答案

您的查询应如下所示

client.Search<ModelClass>(s => s
    .Index("myIndex")
    .Type("myType")
    .Aggregations(a => a
        .Terms("ResultCount", t => t.Field(p => p.Type)
            .Aggregations(a1 => a1
                .TopHits("myHits", h => h
                    .Source(d => d
                        .Includes(fd => fd
                            .Fields(
                                f1 => f1.Type, 
                                f2 => f2.Year
                            )
                        )
                    )
                )
            )
        )
    )
);
hits是保留关键字,因此我使用myHits代替它。
另外,在您的json查询中,您有include,我认为应该是includes
编辑: result.Aggs.Terms("ResultCount").Buckets.ToList()的项目将具有以下结构
{
    "key": 2000,
    "doc_count": 1,
    "myHits": {
      "hits": {
         "total": 1,
         "max_score": 1,
         "hits": [
            {
               "_index": "myIndex",
               "_type": "myType",
               "_id": "AVupJZbRLWQhMqJPXgXa",
               "_score": 1,
               "_source": {
                  "year": 2000,
                  "type": "some type"
               }
            }
         ]
      }
}

关于c# - 有什么方法可以将JSON查询转换为Elasticsearch Nest搜索查询吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43625740/

相关文章:

java - Android JSON 转换后抛出异常(仅限设备端)

java - 如何通过流java8中的键获取所有不同的值

nest - 在Elasticsearch/Nest Bulk API中的哪里指定 “MaxRetry”和 “Timeout”变量?

c# - 使用 Json.NET/NEST/Elasticsearch 在 ASP.NET Core 应用程序中找不到方法错误

c# - 如何将文件作为链接添加到 .NET Core 库中?

c# - 退出 SharpDX 渲染循环

c# - 需要通过 Union() 中的匿名类型显式转换

javascript - 语法错误: "JSON.parse: unexpected non-whitespace ..." when returning JSON from PHP

java - Elasticsearch与JAVA的嵌套聚合

c# - 告诉 C# 变量具有接口(interface)的属性