如何从 ElasticSearch 记录中聚合匹配的 prefix/phrase?
How to aggregate on a matched prefix/phrase from ElasticSearch records?
我有一个字段 "Departments",它是一个列表:
{
"Departments": ["Food Service","Software Development","Manufacturing","Deployment"]
}'
我想聚合 "Department" 中以 "d" 开头的元素。即,从所有记录进行部署。
我能够找到一个元素的前缀为 "d" 但无法对其进行聚合的记录。相反,我在查询前缀 "d".
后返回的记录中汇总了 "Departments" 的所有元素
{
"query": {
"bool": {
"filter": {
"match_phrase_prefix": {
"Departments": {"query": "a"}
}
}
}
},
"aggs" : {
"all_locations" : {
"terms" : { "field" : "Departments" }
}
}
}
例如,如果我总共有4条记录,其中"Deployment"存在于1条中,那么我想要:
部署:1
但我实际得到的是该记录中存在 "Deployment" 的所有元素的频率。
部署:1,
Food:1,
Services:1,
Software:1,
Development:1,
Manufacturing:1
这很简单。只需使用include keyword and add the required regex value to it, in the Terms Query,你就会得到你想要的。
我在下面提到了解决方案:
POST <your_index_name>/_search
{
"query":{
"bool":{
"filter":{
"match_phrase_prefix":{
"Departments":{
"query":"a"
}
}
}
}
},
"aggs":{
"all_locations":{
"terms":{
"field":"Departments",
"include":"D.*"
}
}
}
}
以上查询只会 return 个以 D
开头的聚合桶。您可以将其更改为 Dep.*
以测试 Deployment
如果您认为它解决了您的要求,请随时 accept/upvote 回答。欢迎查询。
我有一个字段 "Departments",它是一个列表: { "Departments": ["Food Service","Software Development","Manufacturing","Deployment"] }'
我想聚合 "Department" 中以 "d" 开头的元素。即,从所有记录进行部署。
我能够找到一个元素的前缀为 "d" 但无法对其进行聚合的记录。相反,我在查询前缀 "d".
后返回的记录中汇总了 "Departments" 的所有元素{
"query": {
"bool": {
"filter": {
"match_phrase_prefix": {
"Departments": {"query": "a"}
}
}
}
},
"aggs" : {
"all_locations" : {
"terms" : { "field" : "Departments" }
}
}
}
例如,如果我总共有4条记录,其中"Deployment"存在于1条中,那么我想要:
部署:1
但我实际得到的是该记录中存在 "Deployment" 的所有元素的频率。
部署:1, Food:1, Services:1, Software:1, Development:1, Manufacturing:1
这很简单。只需使用include keyword and add the required regex value to it, in the Terms Query,你就会得到你想要的。
我在下面提到了解决方案:
POST <your_index_name>/_search
{
"query":{
"bool":{
"filter":{
"match_phrase_prefix":{
"Departments":{
"query":"a"
}
}
}
}
},
"aggs":{
"all_locations":{
"terms":{
"field":"Departments",
"include":"D.*"
}
}
}
}
以上查询只会 return 个以 D
开头的聚合桶。您可以将其更改为 Dep.*
以测试 Deployment
如果您认为它解决了您的要求,请随时 accept/upvote 回答。欢迎查询。