假设我的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;
}
答案 0 :(得分:1)
在地图中,您需要将field1
字符串设置为not_analyzed
,如下所示:
{
"your_type": {
"properties": {
"field1": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
您还可以将field1
设为multi-field并同时设为analyzed
和not_analyzed
以充分利用这两个方面(即分析字段+聚合上的文字匹配)关于not_analyzed
原始子字段的确切值。
{
"your_type": {
"properties": {
"field1": {
"type": "string",
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
}
如果您选择第二个选项,则需要在field1.raw
而非field1
上运行汇总。