ElasticSearch C#client(NEST):使用Spaces访问嵌套聚合

时间:2015-06-04 15:39:14

标签: c# elasticsearch nest elasticsearch-net

假设我的2个值是“红色方块”和“绿色圆圈”, 当我使用弹性搜索运行聚合时,我得到4个值而不是2个,空格分开? 它们是红色,方形,绿色,圆形。 有没有办法获得2个原始值。

代码如下:

 var result = this.client.Search<MyClass>(s => s
            .Size(int.MaxValue)
            .Aggregations(a => a
            .Terms("field1", t => t.Field(k => k.MyField))
            )
            );


        var agBucket = (Bucket)result.Aggregations["field1"];

        var myAgg = result.Aggs.Terms("field1");
        IList<KeyItem> list = myAgg.Items;

        foreach (KeyItem i in list)
        {
            string data = i.Key;
        }

1 个答案:

答案 0 :(得分:1)

在地图中,您需要将field1字符串设置为not_analyzed,如下所示:

{
    "your_type": {
        "properties": {
            "field1": {
                 "type": "string",
                 "index": "not_analyzed"
            }
        }
    }
}

您还可以将field1设为multi-field并同时设为analyzednot_analyzed以充分利用这两个方面(即分析字段+聚合上的文字匹配)关于not_analyzed原始子字段的确切值。

{
    "your_type": {
        "properties": {
            "field1": {
                 "type": "string",
                 "fields": {
                     "raw": {
                         "type": "string",
                         "index": "not_analyzed"
                     }
                 }
            }
        }
    }
}

如果您选择第二个选项,则需要在field1.raw而非field1上运行汇总。