elasticsearch 在Kibana演示中精确匹配查询
我正在测试Kibana的默认演示:elasticsearch 在Kibana演示中精确匹配查询,elasticsearch,kibana,elasticsearch,Kibana,我正在测试Kibana的默认演示:仪表板[电子商务]收入仪表板。 当我从[eCommerce]控件中筛选时,例如,将类别设置为男装配件,我会在[eCommerce]销售分类中看到其他类别。我怎样才能改变这一点 我看到查询是这样构建的: { "query": { "match": { "category.keyword": { "query": "Men's Accessories", "type": "phrase" }
仪表板[电子商务]收入仪表板
。
当我从[eCommerce]控件中筛选时,例如,将类别设置为男装配件
,我会在[eCommerce]销售分类中看到其他类别。我怎样才能改变这一点
我看到查询是这样构建的:
{
"query": {
"match": {
"category.keyword": {
"query": "Men's Accessories",
"type": "phrase"
}
}
}
}
因此,这意味着:
"query": {
"bool": {
"must": [
{
"match_phrase": {
"category.keyword": {
"query": "Men's Accessories"
}
}
},
如何更改此演示以准确显示我选择的类别
示例屏幕:
编辑:
{
"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 Accessories",
"type": "phrase"
}
}
}
}
我不是在寻找一些愚蠢的解决办法——那只会奏效一次。
我只想显示一个类别-但有一个过滤器-而不是一个过滤器,例如三个否定。如果我将我的类别更改为另一个-简单地说,我选择了“女式鞋”,我只想通过应用我从仪表板中选择的这一个过滤器来显示该类别-而不是通过键入一些单词来显示一些定制的过滤器。
我想让可视化显示,当应用时,会显示一个类别,而不是像现在这样的4个类别
编辑:
我在KibanaDev Tools
一节中创建了两个文档(使用全新的男士测试新类别
):
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 Accessories",
"type": "phrase"
}
}
}
}
第二个过滤器:
{
"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 Accessories",
"type": "phrase"
}
}
}
}
第三个过滤器:
{
"query": {
"match": {
"category.keyword": {
"query": "Men's Shoes",
"type": "phrase"
}
}
}
}
第四个过滤器:
{
"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 Accessories",
"type": "phrase"
}
}
}
}
我不知道为什么,但如果我将查询视为DSL,它不会显示“is not”运算符。因此,让我向您显示“is not”运算符的图像
然后,您将只看到一个类别的所有仪表板,如下所示
现在我才意识到你只想看男人的配饰而不是男人的衣服。我的视力很差。不过,我希望你能大致了解一下。如果你愿意,我可以做男装。让我知道。顺便说一句,我试着只用一个过滤器,但不知怎的,这个图不起作用 如果要按特定类别进行筛选,则需要使用filter
而不是terms
。术语聚合将应用于字段中的所有值。另外,请注意,我使用切换禁用了术语聚合。对于您提到的用例,我只使用过滤器
您可以按如下方式进行设置:
您还可以添加多个过滤器,如下所示:
另一个选项是添加一个脚本化字段
,并在这些脚本化字段上可视化,但这种情况非常简单,即从一个字段开始,因此不需要这样做。但是,在整理多个字段中的数据时,脚本化字段可能会很有用
更新答案:
{
"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 Accessories",
"type": "phrase"
}
}
}
}
演示是限制性的,您不能更改数据或使用分析器。但实际上,您可以通过精确匹配所需的值过滤掉数组,然后应用过滤器
现在,如果您使用kibana中的开发工具过滤数组,您将看到它返回与您的类别匹配的所有文档-它可能有也可能没有额外的类别,但它始终会包含您要查找的内容
因此,当您添加过滤器时,您仍然可以在可视化中看到其他类别,因为数据就是这样
您还看到了哪些类别?@Archer我添加了示例屏幕。我只想看男士配饰
而不是男士服装
(例如,右下角的图表)。我忘了按应用
-我编辑了这个问题。这不是一个解决方案。我只想显示一个-但有一个过滤器-而不是一个过滤器和三个否定。如果我将我的类别更改为另一个类别-简单地说,我选择了“女式鞋”,我只想通过应用我从仪表板中选择的这一个过滤器来显示该类别-而不是通过键入一些单词来显示一些定制的过滤器。我想让可视化
在应用时显示一个类别。“顺便说一句,我试着只用一个过滤器,但不知怎的,图形无法工作。”这里的主要问题是,您需要在默认情况下从仪表板进行查询-可能不是作为一个短语。我希望像以前一样使用按钮,并从中动态选择类别。我看到你在做静态可视化-你能编辑你的答案使其像问题中的一样动态吗?从技术上讲,你在顶部添加的过滤器是使其工作的方法。但是在这种情况下,它不会像您期望的那样工作,因为订单有多个类别。向下滚动到最后一个可视化,您可以看到文档本身包含两个类别,并且它与您从中筛选的类别相匹配:。这与数据有关。@tryingHard我更新了我的答案并添加了更多的细节hanks-我编辑了问题-我添加了新的索引和全新的类别(仅单独出现)-你当然是对的-这是由数据引起的。