我必须像这样索引很多文档:
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/