的不同的价值观,我解析URL,例如:聚集在参数
example.org/index.html?parameter_1=value_1¶meter_2=value_2
example.org/index.html?parameter_1=value_1¶meter_2=value_3
example.org/index.html?parameter_1=value_4¶meter_2=value_3
example.org/index.html?parameter_1=value_5¶meter_2=value_4
有通过网址多了很多参数,它们并不总是相同的,它只是简化。
我想获得parameter_2的不同值时,parameter_1等于_1和我有多少命中为每个值(在这种情况下,“VALUE_2”/1和“VALUE_3”/1)。
这里是我的映射:
"my_index" : {
"mappings" : {
"urls" : {
...
"page" : { "type" : "string", "index" : "not_analyzed" },
"parameters" : {
"type" : "nested",
"properties" : {
"name" : { "type" : "string", "index" : "not_analyzed" },
"value" : { "type" : "string", "index" : "not_analyzed" }
}
}
}
}
}
}
这给我的条目是这样的:
{
"page": "example.org/index.html",
"parameters": [
{ "name": "parameter_1", "value": "value_1" },
{ "name": "parameter_2", "value": "value_2" }
]
}
如果我想这样做,但在页面上,我可以做这样的过滤聚集:
{
"size": 0,
"aggs": {
"sitecodes": {
"filter": {
"nested": {
"path": "parameters",
"query": {
"bool": {
"must": [
{
"term": {
"parameters.name": "parameter_1"
}
},
{
"term": {
"parameters.value": "value_1"
}
}
]
}
}
}
},
"aggs": {
"pages": {
"terms": {
"field": "page"
}
}
}
}
}
}
但我无法找到一种方法来做相同的参数_2的值。
作为一种变通方法,我可以复制我的映射信息,才能有这样的条目:
{
"page": "example.org/index.html",
"parameter_1": "value_1",
"parameters": [
{ "name": "parameter_1", "value": "value_1" },
{ "name": "parameter_2", "value": "value_2" }
]
}
但我相信有一个更好的方式来做到这一点,即使我还没有找到它然而。
有什么想法?
如果里面你必须使用一个术语查询或多个匹配查询?接受多个条款的条款? –