我正在将我的PHP MySQL应用程序转换为Elasticsearch, 这是我的PHP MySQL查询以及如何将此查询写入Elasticseach(版本5.5(
我尝试编写聚合,但结果计数与旧的 MySQL 结果计数不匹配。
SELECT COUNT(DISTINCT offerName, `OfferID`, `duration`, `price`, `numChannels`, providerName) AS "totalRecords" FROM `video` WHERE `active` = 'Y'
这是我的Elasticsearch查询:
{
"size": 0,
"query":
{ "bool": {
"should": [
{ "match": { "active": "Y" }}
]
}
},
"aggs": {
"count_by_OfferID": {
"terms": {
"field": "offerID"
}
},
"count_by_offerName":{
"terms": {
"field": "offerName"
}
},
"count_by_duration":{
"terms": {
"field": "duration"
}
},
"count_by_price":{
"terms": {
"field": "price"
}
},
"count_by_downloadSpeed":{
"terms": {
"field": "downloadSpeed"
}
},
"count_by_numChannels":{
"terms": {
"field": "numChannels"
}
},
"count_by_providerName":{
"terms": {
"field": "providerName"
}
}
}
}
也许你应该修改你的映射,以便更有效地得到答案,但Elasticsearch的DISTINCT COUNT
被称为cardinality
聚合,它支持即席脚本。我希望我正确理解了你的问题。
基数指标支持脚本,但是由于哈希需要动态计算,因此性能受到明显影响。