【问题标题】:How to generate a word cloud using elasticsearch?如何使用elasticsearch生成词云?
【发布时间】:2019-07-31 11:34:42
【问题描述】:

我有一个带有表单数据的弹性搜索数据库

record = {#all but age are strings
            'diagnosis': self.diagnosis,
            'vignette': self.vignette,
            'symptoms': self.symptoms_list,
            'care': self.care_level_string,
            'age': self.age, #float
            'gender': self.gender
        }

我想为vignette中的数据创建一个词云。

我尝试了各种查询,我得到错误 400,这意味着我不明白如何查询数据库。

我正在使用 python

这是我能够提出的唯一成功的查询

   def search_phrase_in_vignettes(self, phrase):
        body = {
            "_source": ["vignette"],
            "query": {
                "match_phrase": {
                    "vignette": {
                        "query": phrase,
                    }
                }
            }
        }
        res = self.es.search(index=self.index_name, doc_type=self.doc_type, body=body)

查找字段“vignette”中包含phrase 的任何记录

我认为一些聚合应该可以解决问题,但我似乎无法使用“aggr”编写正确的查询。

希望得到一些帮助,了解如何在 python 中正确编写最简单的聚合查询。

【问题讨论】:

标签: python elasticsearch elasticsearch-aggregation


【解决方案1】:

使用terms aggregation 计算接近字数。您的查询将是:

{
    "query": {
        "match_phrase": {
            "vignette": {
                "query": phrase,
            }
        }
    },    
    "aggs" : {
        "cloud" : {
            "terms" : { "field" : "vignette" }
        }
    }
}

当您收到结果时,从aggregations 键获取存储桶:

res = self.es.search(index=self.index_name, doc_type=self.doc_type, body=body)
for bucket in res['aggregations']['cloud']['buckets']:
    rest of build cloud

【讨论】:

  • 嗨,谢谢。你的建议给了我elasticsearch.exceptions.RequestError: RequestError(400, 'parsing_exception', '[match_phrase] unknown token [START_OBJECT] after [query]')我改变了"query": phrase to "query": {"match_all": {}}`,其余的都是一样的。有什么想法吗?
  • 你知道,我有客户。我为我的客户编写脚本,两天后他打电话给我:我们更改了您的脚本,现在它不起作用。不要像他一样……
  • 我更改脚本的原因是我不想查询短语,而是查询所有单词,就像我在问题中写的那样。在您的情况下,我应该在短语中添加什么?
  • 完全删除查询。并开始阅读文档:elastic.co/guide/en/elasticsearch/reference/current/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-26
  • 1970-01-01
  • 1970-01-01
  • 2017-04-12
  • 1970-01-01
  • 2019-06-02
相关资源
最近更新 更多