如何使用Elasticsearch生成词云?

时间:2019-03-09 17:32:37

标签: python elasticsearch elasticsearch-aggregation

我有一个Elasticsearch数据库,其中的数据格式为

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聚合正确编写最简单的查询方面,我们将提供帮助。

1 个答案:

答案 0 :(得分:0)

使用terms aggregation作为进场字数。您的查询将是:

resource_string

收到结果后,请按{ "query": { "match_phrase": { "vignette": { "query": phrase, } } }, "aggs" : { "cloud" : { "terms" : { "field" : "vignette" } } } } 键进行操作:

aggregations