Совпадение с запросом в демоверсии Kibana - PullRequest
0 голосов
/ 30 апреля 2019

Я тестирую демонстрационную версию 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"
            }
          }
        },

Как я могу изменить эту демонстрацию, чтобы она отображала именно ту категорию, которую я выбрал?

Пример экрана: enter image description here

EDIT:

Я не ищу глупого решения - это работает один раз. Я хочу показать только одну категорию - но с одним фильтром - не один фильтр и, например, три отрицания. Если я поменяю свою категорию на другую, проще говоря, я выбрал «женская обувь», я хочу показать только эту категорию, применяя только один фильтр, который я выбрал на панели инструментов, а не какой-то специальный фильтр, набрав несколько слов. Я хочу сделать визуализацию, которая при применении показывает excatly одну категорию, а не 4, как сейчас.

EDIT: Я создал два документа (с новым Men's TEST_NEW_CATEGORY) в разделе Kibana Dev 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"
    }
}

Тогда я ясно вижу, что при использовании стандартной кнопки фильтра существует только одна категория:

enter image description here

Ответы [ 2 ]

1 голос
/ 14 мая 2019

Если вы хотите фильтровать по определенной категории, вы должны использовать filter вместо terms.Условия агрегирования будут применяться ко всем значениям в поле.Также обратите внимание, что я отключил агрегирование терминов с помощью переключателя.Я использую только фильтр для случая использования, который вы упомянули

Вы можете настроить его, как показано ниже: Filter by One Category

Вы также можетедобавьте несколько фильтров, как показано ниже:

multiple filters

Другой вариант - добавить scripted field и визуализировать эти скриптовые поля, но этот случай довольно прост, т.е.из одного поля, так что не требуется.Однако при сопоставлении данных из нескольких полей могут быть полезны поля со сценариями.

Обновленный ответ:

Демонстрационная версия носит ограничительный характер, вы не можете изменить данные или поиграть санализаторы.Но на самом деле вы можете отфильтровать массив по точному соответствию для требуемого значения, а затем применить фильтр.

На данный момент, если вы отфильтруете массив с помощью инструментов dev в kibana, вы увидите, что он возвращает все документы, гдеон соответствует вашей категории - может иметь или не иметь дополнительные категории, но всегда будет иметь то, что вы ищете.

следовательно, когда вы добавляете фильтр, вы по-прежнему видите другие категории в визуализации, поскольку таковы данные.

kibana query

0 голосов
/ 10 мая 2019

Вот как я это решил. Мне пришлось использовать 4 фильтра только для просмотра мужской одежды.

enter image description here

Изображение может быть слишком маленьким, чтобы его можно было распознать, поэтому я запишу его.

Первый фильтр:

{
"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, он не показывает оператор "не". , поэтому позвольте мне показать вам изображение оператора "не".

enter image description here

Тогда вы увидите все панели инструментов только с одной категорией, как показано ниже.

enter image description here

Теперь я просто понял, что вы хотели видеть только мужской аксессуар, а не мужскую одежду. Мое плохое зрение. Тем не менее, я надеюсь, у вас есть грубая идея. Если хочешь, я могу сделать мужскую одежду. Дай мне знать. Кстати, я пытался сделать это только с одним фильтром, но график почему-то не сработал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...