如何使用sql4es驱动程序在弹性搜索类型上实现计数不同的函数?
Select distinct inv_number , count(1) from invoices;
但它返回特定发票号的总计数。
答案 0 :(得分:2)
因为,OP正在使用 sql4es jdbc驱动程序,他要求为他的用例进行SQL查询:
SELECT COUNT(DISTINCT inv_number) from invoices;
它返回指定列的不同值的数量
答案 1 :(得分:0)
{
"size": 0,
"aggs": {
"total_invoices": {
"terms": {
"field": "inv_number"
},
"aggs": {
"unique_invoiceid": {
"cardinality": {
"field": "inv_number"
}
}
}
}
}
这会在 unique_invoiceid
中为您提供键的发票号码和分心价值答案 2 :(得分:0)
Elasticsearch不支持确定性DISTINCT计数(source)。它仅支持大致不同的计数器,如"cardinality"。 以确定性方式计算区别的一种方法是使用“术语”聚合它们并从结果中计算桶。
答案 3 :(得分:0)
这应该可以计算出完全不同的值:
curl -X POST "localhost:9200/invoices/_search?size=0&pretty" -H 'Content-Type: application/json' -d '{
"aggs" : {
"types_count" : {
"value_count" : { "field" : "inv_number" }
},
"group_by_status": {
"terms": {
"field": "inv_number"
}
}
}
}'