Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
<img src="//i.stack.imgur.com/RUiNP.png" height="16" width="18" alt="" class="sponsor tag img">elasticsearch 在聚合中找到elasticsearch返回命中数_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Kibana - Fatal编程技术网 elasticsearch 在聚合中找到elasticsearch返回命中数,elasticsearch,kibana,elasticsearch,Kibana" /> elasticsearch 在聚合中找到elasticsearch返回命中数,elasticsearch,kibana,elasticsearch,Kibana" />

elasticsearch 在聚合中找到elasticsearch返回命中数

elasticsearch 在聚合中找到elasticsearch返回命中数,elasticsearch,kibana,elasticsearch,Kibana,我试图从数据库中获取具有唯一“sku”字段的行 我有一个正确计算此数字的工作查询,我的查询: GET _search { "size": 0, "aggs": { "unique_products":{ "cardinality":{ "field":"sku.keyword" } } }, "query": {

我试图从数据库中获取具有唯一“sku”字段的行

我有一个正确计算此数字的工作查询,我的查询:

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源代码
键:)如果我的答案对您有帮助,请向上投票并接受:)