【问题标题】:How to aggregate on a matched prefix/phrase from ElasticSearch records?如何从 ElasticSearch 记录中聚合匹配的前缀/短语?
【发布时间】:2019-09-09 08:11:28
【问题描述】:

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

我想聚合以“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

【问题讨论】:

    标签: elasticsearch elasticsearch-aggregation match-phrase


    【解决方案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 的一些新东西。有没有什么全面的东西,无论是书还是文章,我都可以用 ElasticSearch 教我不同的场景?
    • @ShrutiKar 我没有看过任何书。 Elasticsearch 参考文献被大大低估了。遵循作者/来源/技术的 API、原始手册/规范/参考文档(是的,摆脱从谷歌寻找答案/代码的习惯,如果可以的话,我最近也失败了)。开始阅读 Elasticsearch 网站本身发布的一些博客,它们都是很棒的文章。
    • 掌握一项技术可能需要花费巨大的精力和时间,因此请耐心等待。你需要时间来消化你会消费的东西,所以试着花一些时间在每个主题上。我能说的最好的方法是,专注于 ES 或任何技术可以做得最好的抽象。例如使用elasticsearch 1. 基本搜索(包括排名概念,影响评分) 2. 聚合。然后是另一部分 3. 文件摄取 4. 监控集群/节点。对我有帮助的一件事是开始为 SOF 做贡献。它会提高你的学习曲线。祝你好运!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多