我发现的唯一接近的事情是:Elasticsearch中的多个分组
基本上我正在尝试使ES等效于以下mysql查询:
select gender, age_range, count(distinct profile_id) as count
FROM TABLE group by age_range, gender
Run Code Online (Sandbox Code Playgroud)
年龄和性别本身很容易获得:
{
"query": {
"match_all": {}
},
"facets": {
"ages": {
"terms": {
"field": "age_range",
"size": 20
}
},
"gender_by_age": {
"terms": {
"fields": [
"age_range",
"gender"
]
}
}
},
"size": 0
}
Run Code Online (Sandbox Code Playgroud)
这使:
{
"ages": {
"_type": "terms",
"missing": 0,
"total": 193961,
"other": 0,
"terms": [
{
"term": 0,
"count": 162643
},
{
"term": 3,
"count": 10683
},
{
"term": 4,
"count": …Run Code Online (Sandbox Code Playgroud) 像这样的简单查询:
$a = array('_id' => array( '$in' => array_values($ids) ) );
var_dump($a);
$cursor2 = $data->find( $a );
Run Code Online (Sandbox Code Playgroud)
在mongodb 2.4.9中工作,但是,在2.6.0-rc2中返回:
Type: MongoCursorException
Code: 17287
Message: Can't canonicalize query: BadValue $in needs an array
Run Code Online (Sandbox Code Playgroud)
var_dump的输出:
array(1) {
["_id"]=>
array(1) {
["$in"]=>
array(10) {
[0]=>
object(MongoId)#57 (1) {
["$id"]=>
string(24) "52214d60012f8aab278eacb6"
}
[1]=>
object(MongoId)#58 (1) {
["$id"]=>
string(24) "52214d60012f8aab278eaca8"
}
[2]=>
object(MongoId)#59 (1) {
["$id"]=>
string(24) "52214d60012f8aab278eaca7"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道这是Mongo还是PHP相关?
谢谢!