gpt4 book ai didi

python - Elasticsearch:字段相对于其他字段的分布

转载 作者:行者123 更新时间:2023-12-01 01:08:43 24 4
gpt4 key购买 nike

我有一个 elasticsearch 数据库,其中包含以下形式的项目

record = {
'diagnosis': self.diagnosis,
'vignette': self.vignette,
'symptoms': self.symptoms_list,
'care': self.care_level_string,
'age': self.age,
'gender': self.gender
}

我需要一个查询返回'age'( float )的分布,另一个查询返回'gender'(带有2个选项的字符串)的分布关于'care'(带有 3 个选项的字符串)。

含义,例如,如果数据库有

1. care='a', age=1.0, gender='m'
2. care='b', age=2.0, gender='m'
3. care='c', age=1.0, gender='m'
4. care='a', age=1.0, gender='m'
5. care='b', age=2.0, gender='m'
6. care='c', age=3.0, gender='m'
7. care='a', age=3.0, gender='f'
8. care='b', age=3.0, gender='f'

那么关于 care='a'gender 分布将返回类似

{'m:2, 'f':1}

我似乎无法获得正确的语法/理解

我正在使用Python

谢谢!

最佳答案

看着你的问题,我想出了以下映射、查询和响应。

映射

PUT medicalrecord
{
"mappings": {
"mydocs": {
"properties": {
"diagnosis": {
"type": "text"
},
"vignette": {
"type": "text"
},
"symptoms": {
"type": "text"
},
"care": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword"
}
}
},
"age": {
"type": "integer"
},
"gender":{
"type": "text",
"fields": {
"keyword": {
"type": "keyword"
}
}
}
}
}
}
}

请注意我如何为性别护理创建多个字段。我建议您仔细阅读此link以便您了解其相关性。

查询

以下查询是您要查找的内容。

它是简单的 Filter Using Bool 的组合查询 care 后跟 Terms Aggregation在字段性别上。

POST medicalrecord/_search
{
"size": 0,
"query": {
"bool": {
"filter": {
"term": {
"care.keyword": "a"
}
}
}
},
"aggs": {
"mf_distribution": {
"terms": {
"field": "gender.keyword"
}
}
}
}

请注意,我已经创建了一个查询 care,其值为 a。您可以为其其他值构造类似的查询。

看着你的问题,我相信你才刚刚开始使用 Elasticsearch。我建议您花一些时间阅读 Aggregations

下面是您对上述查询的响应的显示方式。

响应

{
"took" : 10,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 3,
"max_score" : 0.0,
"hits" : [ ]
},
"aggregations" : {
"mf_distribution" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [
{
"key" : "m",
"doc_count" : 2
},
{
"key" : "f",
"doc_count" : 1
}
]
}
}
}

您想要的内容可以在存储桶下看到。

希望这有帮助!

关于python - Elasticsearch:字段相对于其他字段的分布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55080639/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com