gpt4 book ai didi

elasticsearch - 如何从 ElasticSearch 记录中聚合匹配的前缀/短语?

转载 作者:行者123 更新时间:2023-12-02 22:27:52 26 4
gpt4 key购买 nike

我有一个字段“部门”,它是一个列表:{“部门”:[“餐饮服务”,“软件开发”,“制造”,“部署”]}'

我想聚合“部门”中以“d”开头的元素。即,从所有记录进行部署。

我能够找到包含一个前缀为“d”但无法聚合它们的元素的记录。相反,我在查询前缀“d”后返回的记录中汇总了“部门”的所有元素。

{
"query": {
"bool": {
"filter": {
"match_phrase_prefix": {
"Departments": {"query": "a"}
}
}
}
},
"aggs" : {
"all_locations" : {
"terms" : { "field" : "Departments" }
}
}
}

例如,如果我总共有 4 条记录,其中“部署”出现在 1 条记录中,那么我想要:

部署:1

但我实际得到的是该记录中存在“部署”的所有元素的频率。

部署:1,食物:1,服务:1,软件:1,发展:1,制造:1

最佳答案

这很简单。只需使用 include关键字并在 Terms Query 中向其添加所需的正则表达式值你会得到你想要的。

我在下面提到了解决方案:


POST <your_index_name>/_search
{
"query":{
"bool":{
"filter":{
"match_phrase_prefix":{
"Departments":{
"query":"a"
}
}
}
}
},
"aggs":{
"all_locations":{
"terms":{
"field":"Departments",
"include":"D.*"
}
}
}
}

上面的查询只会返回以 D 开头的聚合桶。您可以将其更改为 Dep.* 以测试 Deployment

如果您认为它解决了您的要求,请随时接受/赞成答案。欢迎查询。

关于elasticsearch - 如何从 ElasticSearch 记录中聚合匹配的前缀/短语?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55755349/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com