Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
<img src="//i.stack.imgur.com/RUiNP.png" height="16" width="18" alt="" class="sponsor tag img">elasticsearch 从所有文档elasticsearch获取带有计数的所有标记_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch - Fatal编程技术网 elasticsearch 从所有文档elasticsearch获取带有计数的所有标记,elasticsearch,elasticsearch" /> elasticsearch 从所有文档elasticsearch获取带有计数的所有标记,elasticsearch,elasticsearch" />

elasticsearch 从所有文档elasticsearch获取带有计数的所有标记

elasticsearch 从所有文档elasticsearch获取带有计数的所有标记,elasticsearch,elasticsearch,我有一个带有源字段的索引mp_v1:id和标记。“标记”字段以字符串形式包含文档中的所有标记 例如: { "_index": "mp_v1", "_type": "mp", "_id": "5", "_score": 1, "_source": { "id": 5, "tags": "tag1 black blue" } } 如何从所有文档中出现的弹性搜索标签

我有一个带有源字段的索引mp_v1:id和标记。“标记”字段以字符串形式包含文档中的所有标记

例如:

{
        "_index": "mp_v1",
        "_type": "mp",
        "_id": "5",
        "_score": 1,
        "_source": {
          "id": 5,
          "tags": "tag1 black blue"
        }
}
如何从所有文档中出现的弹性搜索标签中获取?例如,如果我有两个文档,第一个文档带有标记“tag1 black blue”,第二个文档带有标记“blue square”,那么它应该返回:blue:2,tag1:1,black:1,square:1

我正在运行ES 5.12

PUT testindex_51
{
    "settings": {
        "analysis": {
            "analyzer": {
            },
             "filter":{
        }
        }
    },
    "mappings": {
        "table1": {
            "properties": {
                "title": {
                    "type": "text",
                    "analyzer": "whitespace",
                    "fielddata": true
                }
            }
        }
    }
}

POST testindex_50/table1
{
  "title" : "tag1 aggs1 blue"
}

POST testindex_50/table1
{
  "title" : "tag2 aggs2 blue"
}

POST testindex_50/table1/_search
{
  "aggs": {
    "tags_count": {
      "terms": {
        "field": "title",
        "size": 10
      }
    }
  }
}
回应

{
  "took": 11,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "failed": 0
  },
  "hits": {
    "total": 2,
    "max_score": 0,
    "hits": []
  },
  "aggregations": {
    "tags_count": {
      "doc_count_error_upper_bound": 0,
      "sum_other_doc_count": 0,
      "buckets": [
        {
          "key": "blue",
          "doc_count": 2
        },
        {
          "key": "aggs1",
          "doc_count": 1
        },
        {
          "key": "aggs2",
          "doc_count": 1
        },
        {
          "key": "tag1",
          "doc_count": 1
        },
        {
          "key": "tag2",
          "doc_count": 1
        }
      ]
    }
  }
}

您可以简单地使用一个简单的术语聚合,在启用fielddata(脏方式)的情况下获得相同的结果


但是建议使用分解字段,然后执行聚合。

标记
是单个字符串吗?如果是那种类型的,那就很容易了。如果不能成为数组,则可以使用