我想对两个字段进行术语聚合。我不想要子聚合,但我想要两个不同的存储桶组中的结果,就像我对两个字段进行了两个单独的查询一样。是否可以将这两个查询合二为一?
第一个查询:
{
"size" : 0,
"aggs" : {
"brands" : {
"terms" : {
"field" : "my_field1",
"size" : 15
},
"aggs" : {
"my_field_top_hits1" : {
"top_hits" : {
"size" : 1
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
第二个查询:
{
"size" : 0,
"aggs" : {
"brands" : {
"terms" : {
"field" : "my_field2",
"size" : 15
},
"aggs" : {
"my_field_top_hits2" : {
"top_hits" : {
"size" : 1
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud) 我想聚合keyword位于nested类型字段内的类型字段。嵌套字段的映射如下:
"Nested_field" : {
"type" : "nested",
"properties" : {
"Keyword_field" : {
"type" : "keyword"
}
}
}
Run Code Online (Sandbox Code Playgroud)
我用来聚合的查询部分如下:
"aggregations": {
"Nested_field": {
"aggregations": {
"Keyword_field": {
"terms": {
"field": "Nested_field.Keyword_field"
}
}
},
"filter": {
"bool": {}
}
},
}
Run Code Online (Sandbox Code Playgroud)
但这并没有返回正确的聚合。即使存在Keyword_field有价值的文档,查询也会返回 0 个存储桶。所以,我的聚合查询有问题。谁能帮我找出问题所在?
elasticsearch elasticsearch-mapping elasticsearch-aggregation
我需要根据日期(在此处添加字段)过滤一组值,然后将其分组device_id。所以我正在使用以下内容:
{
"aggs":{
"dates_between":{
"filter": {
"range" : {
"added" : {
"gte": "2014-07-01 00:00:00",
"lte" :"2014-08-01 00:00:00"
}
}
},
"aggs": {
"group_by_device_id": {
"terms": {
"field": "device_id"
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这"Failed to parse source"在执行查询时给我一个错误。这是正确的做法吗?
如果仅执行日期汇总,则显示的值不在指定的日期范围内
我在elasticsearch(1.5)中有文档,如下所示:
{
"gender": [
{
"name": "unknown",
"value": 12
},
{
"name": "male",
"value": 89
},
{
"name": "female",
"value": 84
}
]
}
Run Code Online (Sandbox Code Playgroud)
我想获得每个性别名称的所有值的总和.像那样:
{
"buckets": [
{
"key": "unknown",
"doc_count": 112,
"gender_a": {
"value": 462
}
},
{
"key": "male",
"doc_count": 107,
"gender_a": {
"value": 438
}
},
{
"key": "female",
"doc_count": 36,
"gender_a": {
"value": 186
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
我试过这个查询:
{
"aggs": {
"gender_name": {
"terms": {
"field": "gender.name"
},
"aggs": {
"gender_sum": {
"sum": …Run Code Online (Sandbox Code Playgroud) 在ElasticSearch 查询上使用术语聚合时,结果会将存储桶限制为前 10 个项目或在size参数上设置的值。例如:
{
"aggs" : {
"cities" : {
"terms" : {
"field" : "city",
"size": 20
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这个查询会给我前 20 个桶和它们的计数。我如何更改此查询以了解唯一"city"术语的总数,以便我可以显示诸如“显示 73 个中排名前 20 的城市”之类的内容?
我使用的是按月分组的弹性搜索版本 6.0.0,我使用的是日期直方图聚合。我试过的例子:
{
"from":0,
"size":2000,
"_source":{
"includes":[
"cost",
"date"
],
"excludes":[
],
"aggregations":{
"date_hist_agg":{
"date_histogram":{
"field":"date",
"interval":"month",
"format":"M",
"order":{
"_key":"asc"
},
"min_doc_count":1
},
"aggregations":{
"cost":{
"sum":{
"field":"cost"
}
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
结果我多次得到 1(Jan/January)。由于我有 2016 年 1 月、2017 年 1 月、2018 年 1 月的数据,因此将返回 3 次 1 月。但我只想要一月一次,其中包含一月所有年份的总和。
elasticsearch elasticsearch-aggregation elasticsearch-5 elasticsearch-6
我研究了elasticsearch聚合查询,但找不到它是否支持多个聚合函数。换句话说,我想知道elasticsearch是否可以生成与此Sql聚合查询等效的内容:
SELECT account_no, transaction_type, count(account_no), sum(amount), max(amount) FROM index_name GROUP BY account_no, transaction_type Having count(account_no) > 10
Run Code Online (Sandbox Code Playgroud)
如果是,怎么办?谢谢。
aggregate-functions elasticsearch elasticsearch-aggregation elasticsearch-sql
我最近在研究 ES,我发现我可以达到几乎相同的结果,但我不清楚这两者之间的区别。
POST kibana_sample_data_flights/_search
{
"size": 0,
"query": {
"constant_score": {
"filter": {
"term": {
"DestCountry": "CA"
}
}
}
},
"aggs": {
"ca_weathers": {
"terms": { "field": "DestWeather" }
}
}
}
Run Code Online (Sandbox Code Playgroud)
POST kibana_sample_data_flights/_search
{
"size": 0,
"aggs": {
"ca": {
"filter": {
"term": {
"DestCountry": "CA"
}
},
"aggs": {
"_weathers": {
"terms": { "field": "DestWeather" }
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)