在 Kibana 演示中完全匹配查询
Match exactly query in Kibana demo
我正在测试 Kibana 的默认演示:Dashboard [eCommerce] Revenue Dashboard
。
当我从 [eCommerce] Controls
过滤时,例如,将类别设置为 Men's Accessories
,我在 [eCommerce] Sales by Category
上看到其他类别。我该如何改变它?
我看到查询是这样构建的:
{
"query": {
"match": {
"category.keyword": {
"query": "Men's Accessories",
"type": "phrase"
}
}
}
}
所以这转化为:
"query": {
"bool": {
"must": [
{
"match_phrase": {
"category.keyword": {
"query": "Men's Accessories"
}
}
},
如何更改此演示以准确显示我选择的类别?
示例屏幕:
编辑:
我不是在寻找一些愚蠢的解决方案 - 一次性有效。
我只想显示一个类别 - 但有一个过滤器 - 而不是一个过滤器,例如三个否定。如果我将我的类别更改为另一个 - 简单地说,我选择 "women's shoes" 我只想显示该类别,只应用我从仪表板中选择的这个过滤器 - 而不是通过键入一些词来定制过滤器。
我想进行可视化,应用时显示 excatly
一个类别 - 而不是现在的 4 个类别。
编辑:
我在 Kibana Dev Tools
部分创建了两个文档(带有全新的 Men's TEST_NEW_CATEGORY
):
POST kibana_sample_data_ecommerce/_doc/
{
"category": [
"Men's TEST_NEW_CATEGORY"
],
"currency": "EUR",
"customer_first_name": "Youssef",
"customer_full_name": "Youssef Jensen",
"customer_gender": "MALE",
"customer_id": 31,
"customer_last_name": "Jensen",
"customer_phone": "",
"day_of_week": "Saturday",
"day_of_week_i": 5,
"email": "youssef@jensen-family.zzz",
"manufacturer": [
"Low Tide Media"
],
"order_date": "2019-05-15T23:45:36+00:00",
"order_id": 592109,
"products": [
{
"base_price": 49.99,
"discount_percentage": 0,
"quantity": 1,
"manufacturer": "Low Tide Media",
"tax_amount": 0,
"product_id": 12202,
"category": "Men's TEST_NEW_CATEGORY",
"sku": "ZO0396603966",
"taxless_price": 49.99,
"unit_discount_amount": 0,
"min_price": 26.49,
"_id": "sold_product_592109_12202",
"discount_amount": 0,
"created_on": "2016-12-31T23:45:36+00:00",
"product_name": "Moccasins - stone",
"price": 49.99,
"taxful_price": 49.99,
"base_unit_price": 49.99
},
{
"base_price": 28.99,
"discount_percentage": 0,
"quantity": 1,
"manufacturer": "Low Tide Media",
"tax_amount": 0,
"product_id": 15017,
"category": "Men's Clothing",
"sku": "ZO0452704527",
"taxless_price": 28.99,
"unit_discount_amount": 0,
"min_price": 13.63,
"_id": "sold_product_592109_15017",
"discount_amount": 0,
"created_on": "2016-12-31T23:45:36+00:00",
"product_name": "Jumper - off-white",
"price": 28.99,
"taxful_price": 28.99,
"base_unit_price": 28.99
}
],
"sku": [
"ZO0396603966",
"ZO0452704527"
],
"taxful_total_price": 78.98,
"taxless_total_price": 78.98,
"total_quantity": 2,
"total_unique_products": 2,
"type": "order",
"user": "youssef",
"geoip": {
"country_iso_code": "US",
"location": {
"lon": -74,
"lat": 40.8
},
"region_name": "New York",
"continent_name": "North America",
"city_name": "New York"
}
}
然后我清楚地看到使用标准过滤器按钮时只有一个类别:
我就是这样解决的。我不得不使用 4 个过滤器才能看到男士服装。
图片可能太小了,看不出来,我写下来。
第一个过滤器:
{
"query": {
"match": {
"category.keyword": {
"query": "Men's Clothing",
"type": "phrase"
}
}
}
}
第二个过滤器:
{
"query": {
"match": {
"category.keyword": {
"query": "Women's Accessories",
"type": "phrase"
}
}
}
}
第三个过滤器:
{
"query": {
"match": {
"category.keyword": {
"query": "Men's Shoes",
"type": "phrase"
}
}
}
}
第四个过滤器:
{
"query": {
"match": {
"category.keyword": {
"query": "Men's Accessories",
"type": "phrase"
}
}
}
}
我不知道为什么,但如果我将查询视为 DSL,它不会显示 "is not" 运算符。 让我给你看一张 "is not" 运算符。
然后,您将看到所有仪表板只有一个类别,如下所示。
现在我才意识到你只想看男装而不是男装。我的视力不好。但是,我希望你有一个大概的想法。如果你愿意,我可以做男装。让我知道。顺便说一句,我试着只用一个过滤器来做,但不知怎么的,图表不起作用。
如果您想按特定类别进行过滤,您需要使用 filter
而不是 terms
。术语聚合将应用于该字段中的所有值。另外,请注意我使用切换禁用了术语聚合。对于您提到的用例,我仅使用 过滤器
您可以像下面这样设置:
您还可以添加多个过滤器,如下所示:
另一种选择是添加 scripted field
并在这些脚本字段上可视化,但这种情况非常简单,即从一个字段开始,因此不需要这样做。但是,在整理来自多个字段的数据时 - 脚本化字段可能很有用。
更新答案:
该演示是有限制的,您不能更改数据或使用分析器。但实际上你可以通过精确匹配你想要的值来过滤掉一个数组,然后应用过滤器。
目前,如果您使用 kibana 中的开发工具过滤数组,您将看到它 returns 所有与您的类别匹配的文档 - 它可能有也可能没有额外的类别,但它总是有您想要的正在找。
因此,当您添加过滤器时,您仍然会在可视化中看到其他类别,因为数据就是这样。
我正在测试 Kibana 的默认演示:Dashboard [eCommerce] Revenue Dashboard
。
当我从 [eCommerce] Controls
过滤时,例如,将类别设置为 Men's Accessories
,我在 [eCommerce] Sales by Category
上看到其他类别。我该如何改变它?
我看到查询是这样构建的:
{
"query": {
"match": {
"category.keyword": {
"query": "Men's Accessories",
"type": "phrase"
}
}
}
}
所以这转化为:
"query": {
"bool": {
"must": [
{
"match_phrase": {
"category.keyword": {
"query": "Men's Accessories"
}
}
},
如何更改此演示以准确显示我选择的类别?
示例屏幕:
编辑:
我不是在寻找一些愚蠢的解决方案 - 一次性有效。
我只想显示一个类别 - 但有一个过滤器 - 而不是一个过滤器,例如三个否定。如果我将我的类别更改为另一个 - 简单地说,我选择 "women's shoes" 我只想显示该类别,只应用我从仪表板中选择的这个过滤器 - 而不是通过键入一些词来定制过滤器。
我想进行可视化,应用时显示 excatly
一个类别 - 而不是现在的 4 个类别。
编辑:
我在 Kibana Dev Tools
部分创建了两个文档(带有全新的 Men's TEST_NEW_CATEGORY
):
POST kibana_sample_data_ecommerce/_doc/
{
"category": [
"Men's TEST_NEW_CATEGORY"
],
"currency": "EUR",
"customer_first_name": "Youssef",
"customer_full_name": "Youssef Jensen",
"customer_gender": "MALE",
"customer_id": 31,
"customer_last_name": "Jensen",
"customer_phone": "",
"day_of_week": "Saturday",
"day_of_week_i": 5,
"email": "youssef@jensen-family.zzz",
"manufacturer": [
"Low Tide Media"
],
"order_date": "2019-05-15T23:45:36+00:00",
"order_id": 592109,
"products": [
{
"base_price": 49.99,
"discount_percentage": 0,
"quantity": 1,
"manufacturer": "Low Tide Media",
"tax_amount": 0,
"product_id": 12202,
"category": "Men's TEST_NEW_CATEGORY",
"sku": "ZO0396603966",
"taxless_price": 49.99,
"unit_discount_amount": 0,
"min_price": 26.49,
"_id": "sold_product_592109_12202",
"discount_amount": 0,
"created_on": "2016-12-31T23:45:36+00:00",
"product_name": "Moccasins - stone",
"price": 49.99,
"taxful_price": 49.99,
"base_unit_price": 49.99
},
{
"base_price": 28.99,
"discount_percentage": 0,
"quantity": 1,
"manufacturer": "Low Tide Media",
"tax_amount": 0,
"product_id": 15017,
"category": "Men's Clothing",
"sku": "ZO0452704527",
"taxless_price": 28.99,
"unit_discount_amount": 0,
"min_price": 13.63,
"_id": "sold_product_592109_15017",
"discount_amount": 0,
"created_on": "2016-12-31T23:45:36+00:00",
"product_name": "Jumper - off-white",
"price": 28.99,
"taxful_price": 28.99,
"base_unit_price": 28.99
}
],
"sku": [
"ZO0396603966",
"ZO0452704527"
],
"taxful_total_price": 78.98,
"taxless_total_price": 78.98,
"total_quantity": 2,
"total_unique_products": 2,
"type": "order",
"user": "youssef",
"geoip": {
"country_iso_code": "US",
"location": {
"lon": -74,
"lat": 40.8
},
"region_name": "New York",
"continent_name": "North America",
"city_name": "New York"
}
}
然后我清楚地看到使用标准过滤器按钮时只有一个类别:
我就是这样解决的。我不得不使用 4 个过滤器才能看到男士服装。
图片可能太小了,看不出来,我写下来。
第一个过滤器:
{
"query": {
"match": {
"category.keyword": {
"query": "Men's Clothing",
"type": "phrase"
}
}
}
}
第二个过滤器:
{
"query": {
"match": {
"category.keyword": {
"query": "Women's Accessories",
"type": "phrase"
}
}
}
}
第三个过滤器:
{
"query": {
"match": {
"category.keyword": {
"query": "Men's Shoes",
"type": "phrase"
}
}
}
}
第四个过滤器:
{
"query": {
"match": {
"category.keyword": {
"query": "Men's Accessories",
"type": "phrase"
}
}
}
}
我不知道为什么,但如果我将查询视为 DSL,它不会显示 "is not" 运算符。 让我给你看一张 "is not" 运算符。
然后,您将看到所有仪表板只有一个类别,如下所示。
现在我才意识到你只想看男装而不是男装。我的视力不好。但是,我希望你有一个大概的想法。如果你愿意,我可以做男装。让我知道。顺便说一句,我试着只用一个过滤器来做,但不知怎么的,图表不起作用。
如果您想按特定类别进行过滤,您需要使用 filter
而不是 terms
。术语聚合将应用于该字段中的所有值。另外,请注意我使用切换禁用了术语聚合。对于您提到的用例,我仅使用 过滤器
您可以像下面这样设置:
您还可以添加多个过滤器,如下所示:
另一种选择是添加 scripted field
并在这些脚本字段上可视化,但这种情况非常简单,即从一个字段开始,因此不需要这样做。但是,在整理来自多个字段的数据时 - 脚本化字段可能很有用。
更新答案:
该演示是有限制的,您不能更改数据或使用分析器。但实际上你可以通过精确匹配你想要的值来过滤掉一个数组,然后应用过滤器。
目前,如果您使用 kibana 中的开发工具过滤数组,您将看到它 returns 所有与您的类别匹配的文档 - 它可能有也可能没有额外的类别,但它总是有您想要的正在找。
因此,当您添加过滤器时,您仍然会在可视化中看到其他类别,因为数据就是这样。