elasticsearch 在聚合中找到elasticsearch返回命中数
我试图从数据库中获取具有唯一“sku”字段的行 我有一个正确计算此数字的工作查询,我的查询:elasticsearch 在聚合中找到elasticsearch返回命中数,elasticsearch,kibana,elasticsearch,Kibana,我试图从数据库中获取具有唯一“sku”字段的行 我有一个正确计算此数字的工作查询,我的查询: GET _search { "size": 0, "aggs": { "unique_products":{ "cardinality":{ "field":"sku.keyword" } } }, "query": {
GET _search
{
"size": 0,
"aggs": {
"unique_products":{
"cardinality":{
"field":"sku.keyword"
}
}
},
"query": {
"bool": {
"must": [
{
"query_string": {
"query": "(merch1: 'Dog') AND ((store_name: 'walmart')) AND product_gap: 'yes'"
}
},
{
"range": {
"capture_date": {
"format": "date",
"gte": "2020-05-13",
"lte": "2020-08-03"
}
}
}
]
}
}
}
返回此结果:
{
"took" : 129,
"timed_out" : false,
"_shards" : {
"total" : 514,
"successful" : 514,
"skipped" : 98,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 150,
"relation" : "eq"
},
"max_score" : null,
"hits" : [ ]
},
"aggregations" : {
"unique_products" : {
"value" : 38
}
}
}
它正确地报告了独特的_产品的数量为38
我正在尝试编辑此查询,以便它实际返回所有38个独特的产品,但不确定如何返回,我首先尝试从agg结果返回最热门的结果:
GET _search
{
"size": 0,
"aggs": {
"unique_products":{
"cardinality":{
"field":"sku.keyword"
}
},
"top_hits": {
"size": 1,
"_source": {
"include": [
"sku", "source_store"
]
}
}
},
"query": {
"bool": {
"must": [
{
"query_string": {
"query": "(merch1: 'Dog') AND ((store_name: 'walmart')) AND product_gap: 'yes'"
}
},
{
"range": {
"capture_date": {
"format": "date",
"gte": "2020-05-13",
"lte": "2020-08-03"
}
}
}
]
}
}
}
但是我的结果中有一个错误说:
{
"error": {
"root_cause": [
{
"type": "parsing_exception",
"reason": "Expected [START_OBJECT] under [size], but got a [VALUE_NUMBER] in [top_hits]",
"line": 10,
"col": 13
}
],
"type": "parsing_exception",
"reason": "Expected [START_OBJECT] under [size], but got a [VALUE_NUMBER] in [top_hits]",
"line": 10,
"col": 13
},
"status": 400
}
cardinality agg仍然是我退回所有38款独特产品的最佳选择吗?谢谢虽然基数聚合提供唯一计数,但它不能接受子聚合。换句话说,
top\u hits
不能在这里直接使用
该方法是正确的,但您可能首先希望对sku
s进行备份,然后使用top\u hits
检索基础文档:
{
"size": 0,
"aggs": {
"unique_products": {
"cardinality": {
"field": "sku.keyword"
}
},
"terms_agg": {
"terms": {
"field": "sku.keyword",
"size": 100
},
"aggs": {
"top_hits_agg": {
"top_hits": {
"size": 1,
"_source": {
"include": [
"sku",
"source_store"
]
}
}
}
}
}
},
"query": {
"bool": {
"must": [
{
"query_string": {
"query": "(merch1: 'Dog') AND ((store_name: 'walmart')) AND product_gap: 'yes'"
}
},
{
"range": {
"capture_date": {
"format": "date",
"gte": "2020-05-13",
"lte": "2020-08-03"
}
}
}
]
}
}
}
仅供参考,您的查询引发异常的原因是
top\u hits
是一种agg类型,与unique\u products
一样,它缺少自己的名称。虽然基数聚合给出了唯一计数,但它不能接受子agg。换句话说,top\u hits
不能在这里直接使用
该方法是正确的,但您可能首先希望对sku
s进行备份,然后使用top\u hits
检索基础文档:
{
"size": 0,
"aggs": {
"unique_products": {
"cardinality": {
"field": "sku.keyword"
}
},
"terms_agg": {
"terms": {
"field": "sku.keyword",
"size": 100
},
"aggs": {
"top_hits_agg": {
"top_hits": {
"size": 1,
"_source": {
"include": [
"sku",
"source_store"
]
}
}
}
}
}
},
"query": {
"bool": {
"must": [
{
"query_string": {
"query": "(merch1: 'Dog') AND ((store_name: 'walmart')) AND product_gap: 'yes'"
}
},
{
"range": {
"capture_date": {
"format": "date",
"gte": "2020-05-13",
"lte": "2020-08-03"
}
}
}
]
}
}
}
仅供参考,您的查询引发异常的原因是
top\u hits
是一种agg类型,与unique\u products
一样,它缺少自己的名称。谢谢,有什么方法可以返回“includes”字段中的所有值吗?现在它返回sku和source_存储,在我的response'hits'变量中,它只在_source字段中显示sku值:“hits”:[{“_索引”:“chuwyfinal-18-07-20201”,“_类型”:“_doc”,“_id”:“v3uuuuuyxmbqyycl-m9Bh”,“_分数”:14.090103,“\u source”:{“sku”:“20584263”}]
尝试存储\u name
而不是源\u store
和/或验证所需的文档是否包含您所需的所有字段。您的权利我刚输入了错误的字符串,谢谢,我的原始_源对象中有97个键/值对,如果我想返回所有97个键/值对,我是否必须将它们单独放入includes语句中,如“includes”:[“upc”、“sku”、“store\u name\u display”、“otherfield”、…“field 97”]
,或者我可以执行includes[*]或者达到那种程度?当然。[“*”]
或删除\u源代码
键:)如果我的答案对您有帮助,请向上投票并接受:)谢谢,有什么方法可以返回“包含”字段中的所有值吗?现在它返回sku和source_存储,在我的response'hits'变量中,它只在_source字段中显示sku值:“hits”:[{“_索引”:“chuwyfinal-18-07-20201”,“_类型”:“_doc”,“_id”:“v3uuuuuyxmbqyycl-m9Bh”,“_分数”:14.090103,“\u source”:{“sku”:“20584263”}]
尝试存储\u name
而不是源\u store
和/或验证所需的文档是否包含您所需的所有字段。您的权利我刚输入了错误的字符串,谢谢,我的原始_源对象中有97个键/值对,如果我想返回所有97个键/值对,我是否必须将它们单独放入includes语句中,如“includes”:[“upc”、“sku”、“store\u name\u display”、“otherfield”、…“field 97”]
,或者我可以执行includes[*]或者达到那种程度?当然。[“*”]
或删除\u源代码
键:)如果我的答案对您有帮助,请向上投票并接受:)