您好我有以下用户对象架构:
layerRef
现在我想根据问题答案创建所有用户的计数
因此,请创建用户及其所有问题答案排列的细分:
{Q:1,A:1}并且同时{Q2,A:1},然后{Q:1,A:2}并同时{Q2,A:1} ......等等上。
概念上类似于这种聚合:
#(0000)
我理解为什么这不起作用,因为一个存储桶排除了我希望在子存储桶中存在的文档,但我想知道是否有其他方法可以解决问题curl -X PUT "localhost:9200/test_example" -H 'Content-Type: application/json' -d'
{
"mappings": {
"answer" : {
"_parent" : {
"type" : "user"
}
}
}
}
'
curl -X PUT "localhost:9200/test_example/user/_bulk?pretty" -H 'Content-Type: application/json' -d'
{ "index": {"_id": 1} }
{ "user": 1, "foo": 1}
{ "index": {"_id": 2} }
{ "user": 2, "foo": 2}
{ "index": {"_id": 3} }
{ "user": 3, "foo": 1}
{ "index": {"_id": 4} }
{ "user": 4, "foo": 1, "answers": {"5": [6,3], "6":[6], "7":[6]}, "potential_approach": true}
'
curl -X PUT "localhost:9200/test_example/answer/_bulk?pretty" -H 'Content-Type: application/json' -d'
{ "index": { "parent": 1}}
{"question":5, "answer":6, "negative": false}
{ "index": { "parent": 1}}
{"question":5, "answer":3, "negative": false}
{ "index": { "parent": 1}}
{"question":6, "answer":6, "negative": false}
{ "index": { "parent": 1}}
{"question":7, "answer":6, "negative": false}
{ "index": { "parent": 2}}
{"question":5, "answer":6, "negative": false}
{ "index": { "parent": 2}}
{"question":5, "answer":3, "negative": false}
{ "index": { "parent": 2}}
{"question":6, "answer":1, "negative": false}
{ "index": { "parent": 2}}
{"question":7, "answer":2, "negative": false}
{ "index": { "parent": 3}}
{"question":5, "answer":6, "negative": false}
{ "index": { "parent": 3}}
{"question":5, "answer":2, "negative": false}
{ "index": { "parent": 3}}
{"question":6, "answer":4, "negative": false}
{ "index": { "parent": 3}}
{"question":7, "answer":3, "negative": false}
'
可以做到这一点,但我有子文件而不是嵌套文件。
我可以采取的一种方法是将所有答案存储在我在用户4上添加的表单中的用户对象上,然后类似的东西可以正常工作:
curl -X POST "localhost:9200/test_example/user/_search?pretty&size=1"
-H 'Content-Type: application/json' -d' { "query": {}, "aggs": {
"permutations": {
"children": {
"type": "answer"
},
"aggs": {
"filtered": {
"filter": {
"bool": {
"should": [],
"must_not": [],
"must": [
{
"term": {
"question": 5
}
}
]
}
},
"aggs": {
"5": {
"terms": {
"field": "answer",
"size": 500
},
"aggs": {
"filtered": {
"filter": {
"bool": {
"should": [],
"must_not": [],
"must": [
{
"term": {
"question": 6
}
}
]
}
},
"aggs": {
"6": {
"terms": {
"field": "answer",
"size": 500
}
}
}
}
}
}
}
}
}
} } } '
以下查询会生成我想要的内容,我的主要问题是有2000个问题ID,所以我担心对于几百万用户行,Elasticsearch可能会为我爆炸(某些用户可能会回答了500-700个不同的问题)。 我可以使用任何方法来处理答案是子文档的模式吗?或者也许有办法检查ES是否可以处理其中可能包含许多密钥的文档。