Нечеткий запрос не работает с типом текста, но работает с типом ключевого слова - PullRequest
0 голосов
/ 23 января 2020

У меня есть запрос, который работает только с типом ключевого слова, и я не могу понять, почему.

Однако, если я использую запрос на совпадение плюс параметр нечеткости, я могу заставить его работать с текстовым типом.

Почему это происходит?

См. Приведенные ниже запросы

(рабочий запрос должен возвращать документы Edd ie.)

1) НЕСКОЛЬКО ТИП ТЕКСТА ЗАПРОСА -> НЕ РАБОТАЕТ

GET kibana_sample_data_ecommerce/_search
{
  "query": {
    "fuzzy": {
      "customer_first_name": {
        "value": "Eddi",
        "fuzziness": "AUTO"
      }
    }
  }
}

2) НЕСКОЛЬКО ТИП КЛЮЧЕВОГО ВОПРОСА - РАБОТАЕТ

GET kibana_sample_data_ecommerce/_search
{
  "query": {
    "fuzzy": {
      "customer_first_name.keyword": {
        "value": "Eddi",
        "fuzziness": "AUTO"
      }
    }
  }
}

3) СООТВЕТСТВИЕ ЗАПРОСАМ + FUZINESS -> РАБОТАЮЩАЯ

GET kibana_sample_data_ecommerce/_search
{
  "query": {
    "match": {
      "customer_first_name.keyword": {
        "query": "Eddi",
        "fuzziness": "Auto"
      }
    }
  }
}

УКАЗАТЕЛЬ НАСТРОЙКИ

{
      "kibana_sample_data_ecommerce" : {
        "aliases" : { },
        "mappings" : {
          "properties" : {
            "category" : {
              "type" : "text",
              "fields" : {
                "keyword" : {
                  "type" : "keyword"
                }
              }
            },
            "currency" : {
              "type" : "keyword"
            },
            "customer_birth_date" : {
              "type" : "date"
            },
            "customer_first_name" : {
              "type" : "text",
              "fields" : {
                "keyword" : {
                  "type" : "keyword",
                  "ignore_above" : 256
                }
              }
            },
            "customer_full_name" : {
              "type" : "text",
              "fields" : {
                "keyword" : {
                  "type" : "keyword",
                  "ignore_above" : 256
                }
              }
            },
            "customer_gender" : {
              "type" : "keyword"
            },
            "customer_id" : {
              "type" : "keyword"
            },
            "customer_last_name" : {
              "type" : "text",
              "fields" : {
                "keyword" : {
                  "type" : "keyword",
                  "ignore_above" : 256
                }
              }
            },
            "customer_phone" : {
              "type" : "keyword"
            },
            "day_of_week" : {
              "type" : "keyword"
            },
            "day_of_week_i" : {
              "type" : "integer"
            },
            "email" : {
              "type" : "keyword"
            },
            "geoip" : {
              "properties" : {
                "city_name" : {
                  "type" : "keyword"
                },
                "continent_name" : {
                  "type" : "keyword"
                },
                "country_iso_code" : {
                  "type" : "keyword"
                },
                "location" : {
                  "type" : "geo_point"
                },
                "region_name" : {
                  "type" : "keyword"
                }
              }
            },
            "manufacturer" : {
              "type" : "text",
              "fields" : {
                "keyword" : {
                  "type" : "keyword"
                }
              }
            },
            "order_date" : {
              "type" : "date"
            },
            "order_id" : {
              "type" : "keyword"
            },
            "products" : {
              "properties" : {
                "_id" : {
                  "type" : "text",
                  "fields" : {
                    "keyword" : {
                      "type" : "keyword",
                      "ignore_above" : 256
                    }
                  }
                },
                "base_price" : {
                  "type" : "half_float"
                },
                "base_unit_price" : {
                  "type" : "half_float"
                },
                "category" : {
                  "type" : "text",
                  "fields" : {
                    "keyword" : {
                      "type" : "keyword"
                    }
                  }
                },
                "created_on" : {
                  "type" : "date"
                },
                "discount_amount" : {
                  "type" : "half_float"
                },
                "discount_percentage" : {
                  "type" : "half_float"
                },
                "manufacturer" : {
                  "type" : "text",
                  "fields" : {
                    "keyword" : {
                      "type" : "keyword"
                    }
                  }
                },
                "min_price" : {
                  "type" : "half_float"
                },
                "price" : {
                  "type" : "half_float"
                },
                "product_id" : {
                  "type" : "long"
                },
                "product_name" : {
                  "type" : "text",
                  "fields" : {
                    "keyword" : {
                      "type" : "keyword"
                    }
                  },
                  "analyzer" : "english"
                },
                "quantity" : {
                  "type" : "integer"
                },
                "sku" : {
                  "type" : "keyword"
                },
                "tax_amount" : {
                  "type" : "half_float"
                },
                "taxful_price" : {
                  "type" : "half_float"
                },
                "taxless_price" : {
                  "type" : "half_float"
                },
                "unit_discount_amount" : {
                  "type" : "half_float"
                }
              }
            },
            "sku" : {
              "type" : "keyword"
            },
            "taxful_total_price" : {
              "type" : "half_float"
            },
            "taxless_total_price" : {
              "type" : "half_float"
            },
            "total_quantity" : {
              "type" : "integer"
            },
            "total_unique_products" : {
              "type" : "integer"
            },
            "type" : {
              "type" : "keyword"
            },
            "user" : {
              "type" : "keyword"
            }
          }
        },
        "settings" : {
          "index" : {
            "number_of_shards" : "1",
            "auto_expand_replicas" : "0-1",
            "provided_name" : "kibana_sample_data_ecommerce",
            "creation_date" : "1579684918696",
            "number_of_replicas" : "0",
            "uuid" : "Ga3UfyyAQjGpa5JDbJB7Sw",
            "version" : {
              "created" : "7050299"
            }
          }
        }
      }
    }

1 Ответ

0 голосов
/ 23 января 2020

Нечеткий запрос - это запрос на уровне термина. Это означает, что запросы не анализируются.

ПОЧЕМУ ЗАПРОС 1) FAILS

Если вы запросите «Eddi», это будет сравниваться с анализируемым текстом, в данном случае » edd ie ".

А от 'Eddi' до 'edd ie' это расстояние 2 редактирования.

Следовательно, запрос не будет успешным, потому что слагаемые между 3 и 5 длиной Максимальное расстояние для редактирования равно 1 (с конфигурацией «fuzziness: AUTO»)

ПОЧЕМУ ЗАПРОС 2) УСПЕШНО

С другой стороны, если вы используете ключевое слово, ключевые слова хранить без анализа. и поэтому. Эдди находится на расстоянии 1 редактирования от Edd ie.

...