Elasticsearch - 不同计数
Elasticsearch - Count distinct
我有一个带日志的基本索引
部分日志是user1对user2的访问
我设法计算了一个用户收到的访问总数,但我不知道如何计算一个用户收到的不同用户的总数
这是给我一个用户的所有日志
{
"post_filter":{
"bool":{
"must":[
{
"term":{
"message":"visit"
}
},
{
"term":{
"ctxt_user2":"733264"
}
}
]
}
},
"query":{
"match_all":{}
}
}
实际上,我正在为 Symfony2 使用 FoSElasticaBundle
$filter->addMust((new Term())->setTerm('message', 'visit'));
$filter->addMust((new Term())->setTerm('ctxt_user2', $this->search->getVisit()));
我用聚合器阅读了 ES 文档中的一些页面,但我从未设法得到我想要的东西
转换为SQL,我只需要
SELECT COUNT(DISCTING ctxt_user1)
FROM logs
WHERE ctxt_user2 = 733264
编辑:
基数接缝正是我所需要的。
现在只需要了解如何将其与 FosElasticaBundle
一起使用
"aggs": {
"yourdistinctcount": {
"cardinality": {
"field": "ctxt_user1"
}
}
}
尝试这个查询(未测试...):
{
"query" : {
"bool":{
"must":[
{
"term":{
"message":"visit"
}
},
{
"term":{
"ctxt_user2":"733264"
}
}
]
}
},
"aggs": {
"yourdistinctcount": {
"terms": {
"field": "ctxt_user1"
}
}
}
}
post_filter
查询不能用于您的情况。正如它在 Elastic.co 网站上所写:post_filter
应用于搜索请求最后的搜索命中,在已经计算聚合之后。`
HtH,
我有一个带日志的基本索引
部分日志是user1对user2的访问
我设法计算了一个用户收到的访问总数,但我不知道如何计算一个用户收到的不同用户的总数
这是给我一个用户的所有日志
{
"post_filter":{
"bool":{
"must":[
{
"term":{
"message":"visit"
}
},
{
"term":{
"ctxt_user2":"733264"
}
}
]
}
},
"query":{
"match_all":{}
}
}
实际上,我正在为 Symfony2 使用 FoSElasticaBundle
$filter->addMust((new Term())->setTerm('message', 'visit'));
$filter->addMust((new Term())->setTerm('ctxt_user2', $this->search->getVisit()));
我用聚合器阅读了 ES 文档中的一些页面,但我从未设法得到我想要的东西
转换为SQL,我只需要
SELECT COUNT(DISCTING ctxt_user1)
FROM logs
WHERE ctxt_user2 = 733264
编辑:
基数接缝正是我所需要的。 现在只需要了解如何将其与 FosElasticaBundle
一起使用"aggs": {
"yourdistinctcount": {
"cardinality": {
"field": "ctxt_user1"
}
}
}
尝试这个查询(未测试...):
{
"query" : {
"bool":{
"must":[
{
"term":{
"message":"visit"
}
},
{
"term":{
"ctxt_user2":"733264"
}
}
]
}
},
"aggs": {
"yourdistinctcount": {
"terms": {
"field": "ctxt_user1"
}
}
}
}
post_filter
查询不能用于您的情况。正如它在 Elastic.co 网站上所写:post_filter
应用于搜索请求最后的搜索命中,在已经计算聚合之后。`
HtH,