【问题标题】:What are tokens in elasticsearch for exactly?elasticsearch 中的标记到底是什么?
【发布时间】:2021-07-30 15:42:20
【问题描述】:

我搜索了我的问题,但找不到答案。我对 elasticsearch 还很陌生,我想我还没有了解令牌的概念。

我使用自定义 name_analyzer 构建了一个映射,该映射使用过滤器小写、唯一和 asciifolding 以及 preserve_original=true。

我有字段 search_combo_name,例如内容是这样的:

André, André Mustermann, andre.mustermann@gmail.com, Mustermann

当我使用 kibana 针对我的 name_analyzer 分析上面的字符串时,我得到以下结果:

{
  "tokens" : [
    {
      "token" : "andre",
      "start_offset" : 0,
      "end_offset" : 5,
      "type" : "<ALPHANUM>",
      "position" : 0
    },
    {
      "token" : "andré",
      "start_offset" : 0,
      "end_offset" : 5,
      "type" : "<ALPHANUM>",
      "position" : 0
    },
    {
      "token" : "mustermann",
      "start_offset" : 13,
      "end_offset" : 23,
      "type" : "<ALPHANUM>",
      "position" : 1
    },
    {
      "token" : "andre.mustermann",
      "start_offset" : 25,
      "end_offset" : 41,
      "type" : "<ALPHANUM>",
      "position" : 2
    },
    {
      "token" : "gmail.com",
      "start_offset" : 42,
      "end_offset" : 51,
      "type" : "<ALPHANUM>",
      "position" : 3
    }
  ]
}

这是我期望的结果,但是这些令牌是用来做什么的? 当我使用 bool must/should 或 match 进行搜索时,elasticsearch 会搜索字段的内容而不是标记,对吗?

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    这些标记将被编入索引,然后您可以搜索。

    所有查询都将在这些标记上运行(即不直接在原始内容上),这就是为什么设置正确的字段类型和分析器(如果是 text 字段)很重要的原因将数据索引到 Elasticsearch。

    不这样做可能会导致相关性不佳(以及性能不佳),即查询结果不佳和/或不精确,或者查询执行时间过长。这是一个非常广泛的话题,但也许如果您更详细地介绍您的用例,我们可以提供更好的帮助。

    【讨论】:

    • 感谢您的回答!我的搜索现在按预期工作,但也许您可以再做一件事:我必须将名字和姓氏映射为关键字,因为我想按这些字段排序。但是分析器不能与关键字字段一起使用。所以我为他们创建了一个规范化器,它使用过滤器小写和 asciifolding。当我使用"query": { "bool": { "should": { "wildcard": { "firstname": { "value": { "andre*" } } } } } } 时,它会给出“André Mustermann”作为结果。这就是我想要的,但这是为什么呢?为什么在这种情况下 e 匹配 é?
    • e 匹配 é 因为 asciifolding 规范化器。如果需要,请随时就这个具体案例提出另一个问题。
    • 你到底是什么意思?搜索现在可以按我的意愿进行。 :)
    猜你喜欢
    • 2020-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-10
    • 1970-01-01
    • 2013-05-29
    • 2012-06-11
    • 1970-01-01
    相关资源
    最近更新 更多