ElasticSearch 聚合查询 Select 每个组的前 1 项基于术语数组值
ElasticSearch Aggregation Query to Select Top 1 for each Group base on Terms Array values
我在下面写了使用过滤器和 Must 获取数据的 ES 查询:
我只能使用 ElasticSearch V5 来编写查询。
{
"bool" : {
"must" : [
{
"term" : {
"Name" : {
"value" : "Self",
"boost" : 1.0
}
}
}
],
"filter" : [
{
"terms" : {
"Number" : [
"111",
"222"
]
}
}
]
}
}
我得到的输出是这样的重复值。我想使用聚合查询。
"hits": [
{ "Name": "Self","Number": 111},
{ "Name": "Self","Number": 222},
{ "Name": "Self","Number": 222},
{ "Name": "Self","Number": 111}
]
我想 select 每个数字只有前 1 个值,所以我的结果会更少。
O/P 应该是:
"hits": [
{ "Name": "Self","Number": 222},
{ "Name": "Self","Number": 111}
]
您可以使用 field collapsing 删除重复的结果
{
"query": {
"bool": {
"must": [
{
"term": {
"Name": {
"value": "Self",
"boost": 1.0
}
}
}
],
"filter": [
{
"terms": {
"Number": [
"111",
"222"
]
}
}
]
}
},
"collapse": {
"field": "Number"
}
}
搜索结果将是
"hits": [
{
"_index": "68849562",
"_type": "_doc",
"_id": "1",
"_score": 0.10536051,
"_source": {
"Name": "Self",
"Number": 111
},
"fields": {
"Number": [
111
]
}
},
{
"_index": "68849562",
"_type": "_doc",
"_id": "2",
"_score": 0.10536051,
"_source": {
"Name": "Self",
"Number": 222
},
"fields": {
"Number": [
222
]
}
}
]
我在下面写了使用过滤器和 Must 获取数据的 ES 查询: 我只能使用 ElasticSearch V5 来编写查询。
{
"bool" : {
"must" : [
{
"term" : {
"Name" : {
"value" : "Self",
"boost" : 1.0
}
}
}
],
"filter" : [
{
"terms" : {
"Number" : [
"111",
"222"
]
}
}
]
}
}
我得到的输出是这样的重复值。我想使用聚合查询。
"hits": [
{ "Name": "Self","Number": 111},
{ "Name": "Self","Number": 222},
{ "Name": "Self","Number": 222},
{ "Name": "Self","Number": 111}
]
我想 select 每个数字只有前 1 个值,所以我的结果会更少。
O/P 应该是:
"hits": [
{ "Name": "Self","Number": 222},
{ "Name": "Self","Number": 111}
]
您可以使用 field collapsing 删除重复的结果
{
"query": {
"bool": {
"must": [
{
"term": {
"Name": {
"value": "Self",
"boost": 1.0
}
}
}
],
"filter": [
{
"terms": {
"Number": [
"111",
"222"
]
}
}
]
}
},
"collapse": {
"field": "Number"
}
}
搜索结果将是
"hits": [
{
"_index": "68849562",
"_type": "_doc",
"_id": "1",
"_score": 0.10536051,
"_source": {
"Name": "Self",
"Number": 111
},
"fields": {
"Number": [
111
]
}
},
{
"_index": "68849562",
"_type": "_doc",
"_id": "2",
"_score": 0.10536051,
"_source": {
"Name": "Self",
"Number": 222
},
"fields": {
"Number": [
222
]
}
}
]