python - Elasticsearch 词聚合中的问题

标签 python amazon-web-services elasticsearch search aggregation

在 Elasticsearch 聚合查询中,我需要获取观看电影“冻结”的用户观看的所有电影。这就是我的结果来源

{
  "_index": "user",
  "_type": "user",
  "_id": "ovUowmUBREWOv-CU-4RT",
  "_version": 4,
  "_score": 1,
  "_source": {
    "movies": [
      "Angry birds 1",
      "PINNOCCHIO",
      "Frozen",
      "Hotel Transylvania 3"
    ],
    "user_id": 86
  }
}

这是我正在使用的查询。
{
  "query": {
    "match": {
      "movies": "Frozen"
    }
  },
  "size": 0,
  "aggregations": {
    "movies_like_Frozen": {
      "terms": {
        "field": "movies",
        "min_doc_count": 1
      }
    }
  }
}

我在存储桶中得到的结果是正确的,但是影片名称被这样的空白分隔
"buckets": [
                {
                    "key": "3",
                    "doc_count": 2
                },
                {
                    "key": "hotel",
                    "doc_count": 2
                },
                {
                    "key": "transylvania",
                    "doc_count": 2
                },
                {
                    "key": "1",
                    "doc_count": 1
                },
                {
                    "key": "angry",
                    "doc_count": 1
                },
                {
                    "key": "birds",
                    "doc_count": 1
                }
            ]

如何获得带有“愤怒的小鸟1”,“Hotel Transylvania 3”的水桶。

请帮忙。

最佳答案

在Elasticsearch 6.x中,每个文本字段都进行隐式分析。要覆盖此问题,您需要为文本类型字段创建一个映射,作为索引中的not_analyzed,然后在其中插入文档。

就你而言

{
  "mappings": {
    "user": {
      "properties": {
        "movies": {
          "type": "text",
          "index": "not_analyzed",
          "fields": {
            "keyword": {
              "type": "text",
              "index": "not_analyzed"
            }
          }
        },
        "user_id": {
          "type": "long"
        }
      }
    }
  }
}

希望它能工作。

关于python - Elasticsearch 词聚合中的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52271773/

相关文章:

python - 移动目录后 Django 无法工作。我有路径/Python 安装问题吗?

python - Numpy:从非常大的内存映射 Numpy 数组中删除列

Python3.6要exe还是编译成其他选项?

elasticsearch - 如何编写一个匹配然后过滤记录的 Elasticsearch 查询?

amazon-web-services - FIlebeat-Redis-Logstash : Filebeat fast and Logstah slow, logstash 线程?

python - 如何从列表中选择一个与之前不同的随机整数?

mysql - 有没有办法让 AWS RDS Public Accessibility = No 但仍然可以在 EC2 实例之外访问?

amazon-web-services - 如何在树莓派上安装 awscli 版本 2

django - 用 AWS 基础设施替代 Celery 和 Redis 是什么?

elasticsearch - 部分查询结果归因于Elasticsearch集群运行状况为黄色