在 elasticsearch 中按计数过滤
Filter by count in elasticsearch
考虑以下数据
POST programming/languages/1
{
"name":"java",
"type":"general_purpose"
}
POST programming/languages/2
{
"name":"javascript",
"type":"scripting"
}
POST programming/languages/3
{
"name":"c",
"type":"general_purpose"
}
GET programming/languages/_search
{
"query": {
"match": {
"type":"general_purpose"
}
}
}
如果我需要查找与字段 type
有多个匹配项的文档,在 elasticsearch 中该怎么做?
通常使用带有 having
子句的 group by
我们可以在 SQL 中实现。
我们可以在 elasticsearch 中实现吗?
您好,您可以使用 top_hits 查询,它不适合您希望为一个术语查找大量文档的情况。结合自己的情况试一试。但是我觉得这个查询可以找到你想要的。
GET /programming/languages/_search?search_type=count
{
"aggs": {
"byTop": {
"terms": {
"field": "type",
"min_doc_count": 2,
"size": 10
},
"aggs": {
"theTop": {
"top_hits": {
"size":5
}
}
}
}
}
}
考虑以下数据
POST programming/languages/1
{
"name":"java",
"type":"general_purpose"
}
POST programming/languages/2
{
"name":"javascript",
"type":"scripting"
}
POST programming/languages/3
{
"name":"c",
"type":"general_purpose"
}
GET programming/languages/_search
{
"query": {
"match": {
"type":"general_purpose"
}
}
}
如果我需要查找与字段 type
有多个匹配项的文档,在 elasticsearch 中该怎么做?
通常使用带有 having
子句的 group by
我们可以在 SQL 中实现。
我们可以在 elasticsearch 中实现吗?
您好,您可以使用 top_hits 查询,它不适合您希望为一个术语查找大量文档的情况。结合自己的情况试一试。但是我觉得这个查询可以找到你想要的。
GET /programming/languages/_search?search_type=count
{
"aggs": {
"byTop": {
"terms": {
"field": "type",
"min_doc_count": 2,
"size": 10
},
"aggs": {
"theTop": {
"top_hits": {
"size":5
}
}
}
}
}
}