我正在尝试找到当前正在查看的标签的相关标签.索引中的每个文档都被标记.每个标签由两部分组成 - ID和文本名称:
{
...
meta: {
...
tags: [
{
id: 123,
name: 'Biscuits'
},
{
id: 456,
name: 'Cakes'
},
{
id: 789,
name: 'Breads'
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
要获取相关标记,我只是查询文档并获取其标记的聚合:
{
"query": {
"bool": {
"must": [
{
"match": {
"item.meta.tags.id": "123"
}
},
{
...
}
]
}
},
"aggs": {
"baked_goods": {
"terms": {
"field": "item.meta.tags.id",
"min_doc_count": 2
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这很完美,我得到了我想要的结果.但是,我要求标签ID 和名称都做有用的事情.我已经探索了如何实现这一点,解决方案似乎是:
第一选项和第二选项对我来说是不可用的,所以我一直在使用3,但它没有以预期的方式响应.鉴于以下查询(仍在搜索也标有'Biscuits'的文档):
{
...
"aggs": {
"baked_goods": {
"terms": …Run Code Online (Sandbox Code Playgroud) 示例文件:
{
"id": "62655",
"attributes": [
{
"name": "genre",
"value": "comedy"
},
{
"name": "year",
"value": "2016"
}
]
}
{
"id": "62656",
"attributes": [
{
"name": "genre",
"value": "horror"
},
{
"name": "year",
"value": "2016"
}
]
}
{
"id": "62657",
"attributes": [
{
"name": "language",
"value": "english"
},
{
"name": "year",
"value": "2015"
}
]
}
Run Code Online (Sandbox Code Playgroud)
预期输出:
{
"hits" : {
"total": 3,
"hits": []
},
"aggregations": {
"attribCount": {
"language": 1,
"genre": 2,
"year": 3 …Run Code Online (Sandbox Code Playgroud) aggregate ×1