相关疑难解决方法(0)

如何获得具有多个字段的Elasticsearch聚合

我正在尝试找到当前正在查看的标签的相关标签.索引中的每个文档都被标记.每个标签由两部分组成 - 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 名称都做有用的事情.我已经探索了如何实现这一点,解决方案似乎是:

  1. 索引时组合字段
  2. 将字段组合在一起的脚本
  3. 嵌套聚合

第一选项和第二选项对我来说是不可用的,所以我一直在使用3,但它没有以预期的方式响应.鉴于以下查询(仍在搜索也标有'Biscuits'的文档):

{
    ...
    "aggs": {
        "baked_goods": {
            "terms": …
Run Code Online (Sandbox Code Playgroud)

aggregate faceted-search elasticsearch

37
推荐指数
1
解决办法
3万
查看次数

Elasticsearch 数组值计数聚合

示例文件

{
    "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)

elasticsearch elasticsearch-2.0 elasticsearch-aggregation

5
推荐指数
1
解决办法
2万
查看次数