elasticsearch - 如何在elasticsearch中按子串聚合

标签 elasticsearch aggregation

我必须像这样索引很多文档:

POST /example/doc
{
 id : "type-name",
 foo: bar
}

我想检索所有存在的类型的列表。例如

 POST /example/doc
 {
     id : "AAA-123",
     foo: bar
 }
 POST /example/doc
 {
     id : "AAA-456",
     foo: bar
 }
 POST /example/doc
 {
     id : "BBB-123",
     foo: bar
 }

并让 elasticseaarch 给我一个我有 AAA 和 BBB 的列表。

更新 我还使用自定义分析器解决了问题

"settings": { 
        "analysis": {
            "char_filter" : {
                "remove_after_minus":{
                    "type":"pattern_replace",
                    "pattern":"-(.*)",
                    "replacement":""
                }
            },
            "analyzer": {
                "id_analyzer":{
                     "tokenizer" : "standard",
                    "char_filter" : ["remove_after_minus"]
                }
            }
        }
    }

最佳答案

如果保留标准分析器,id 将在“-”处拆分。因此,如果您的类型大小写相同,您可以使用简单的方面查询

curl -XPOST  "http://localhost:9023/index/type/_search?size=0&pretty=true" -d
'{
    "query" : {
        { "regexp":{ "id": "[A-Z]+" }
    },
   "facets" : {
       "id" : {
           "terms" : {
               "field" : "id",
               "size" : 50
            }
        }
    }
}'

应该给你一些你可以使用的东西。

关于elasticsearch - 如何在elasticsearch中按子串聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23128436/

相关文章:

MySQL - 如何将数据与前一行进行分组比较?

Python Pandas : Groupby and Apply multi-column operation

映射时 Elasticsearch 错误 - 未知设置

elasticsearch - elasticsearch重新索引错误-远程重新索引

r - 快速融化的数据表操作

javascript - 自定义控件 - 如何将聚合封装在另一个控件中

python - Pandas:使用 apply 对数据框上的行和列求和

elasticsearch - 如何限制多索引搜索查询中每个索引的搜索结果?

elasticsearch - 为长时间运行的更新查询获取 Elasticsearch 任务的状态

amazon-web-services - Elasticsearch 的内部运作方式?