我是弹性搜索的新手,我对聚合感到困惑。是否可以设置字段的长度。我的意思是
curl -XPOST "http://localhost:9200/market/product/_search" -d'
{
"size": 0,
"aggregations": {
"name_count": {
"terms": {
"field": "name",
"size":10
}
}
}
}'
我可以设置字段长度的长度(“字段”:“名称”)。
关于我认为可以使用脚本的解决方案。
curl -XPOST "http://localhost:9200/market/product/_search" -d'
{
"size": 0,
"aggregations": {
"name_count": {
"terms": {
"field": "name",
"size":10,
"script" : "doc['name'].value.length > 2"
}
}
}
}'
我不确定,如果我自己回答。但是我很困惑,所以如果有人能回答我的话。
由于
答案 0 :(得分:0)
如果您想在Elasticsearch中为每个产品名称计算记录数,但又不想考虑短于三个字符的产品名称,则可以尝试以下方法:
{
"size" : 0,
"query" : {
"regexp" : {
"name" : ".{3,}"
}
},
"aggregations": {
"name_count": {
"terms": {
"field": "name",
"size":10
}
}
}
}
指定regexp查询将确保只有名称长度为>的文档您的汇总考虑了2。
我将此答案基于另一个stackoverflow帖子(ElasticSearch:filtering documents based on field length),其他用户询问他们如何根据字段长度过滤结果。