当前位置: 首页 > 面试题库 >

Elasticsearch定制分析器

柴文林
2023-03-14
问题内容

是否可以创建可按空间拆分索引然后创建两个令牌的自定义elasticsearch分析器?一是空间前的一切,二是空间。例如:我存储的记录字段包含以下文本:“
35 G”。现在,我想通过仅在该字段中键入“ 35”或“ 35 G”查询来接收该记录。因此,Elastic应该创建两个令牌:[‘35’,‘35
G’],并且不再更多。

如果可能,如何实现?


问题答案:

可使用path_hierarchytokenizer实现。

PUT test
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_analyzer": {
          "tokenizer": "my_tokenizer"
        }
      },
      "tokenizer": {
        "my_tokenizer": {
          "type": "path_hierarchy",
          "delimiter": " "
        }
      }
    }
  }
  ...
}

现在

POST test/_analyze
{
  "analyzer": "my_analyzer",
  "text": "35 G"
}

输出

{
  "tokens": [
    {
      "token": "35",
      "start_offset": 0,
      "end_offset": 2,
      "type": "word",
      "position": 0
    },
    {
      "token": "35 G",
      "start_offset": 0,
      "end_offset": 4,
      "type": "word",
      "position": 0
    }
  ]
}


 类似资料:
  • 实时分析

  • 定制分析 一、功能简介 定制分析提供快速、便捷构建自定义报告的功能,实现任意维度的交叉分析,以满足开发者灵活、多维查看报告的需求。定制分析下共两个功能模块,实时分析以及定制报告;开发者可利用实时分析模块快速构建定制分析模型,查看、分析数据,并灵活调整、筛选维度,以验证某些想法及判断,再利用定制报告模块将其固化下来,以便之后例行化地按照查看数据。 二、适用场景 定制分析适用于以下场景: 为解决某个数

  • 主要内容:分析器,令牌器/标记生成器,令牌过滤器,字符过滤器当在搜索操作期间处理查询时,任何索引中的内容由分析模块分析。该模块由分析器,分词器,分词器过滤器和字符过滤器组成。 如果没有定义分析器,则默认情况下注册内置的分析器,分词器,分词器过滤器和字符过滤器到分析模块。例如。 请求正文 响应 分析器 分析器由令牌器和可选的令牌过滤器组成。这些分析器在具有逻辑名的分析模块中注册,可以在映射定义或某些API中引用它们。有许多默认分析仪如下 - 编号 分析器 描

  • 我无法确定问题的原因,我不知道是分析器无效还是elasticsearch甚至找到了autocomplete-analyser.json文件。我该怎么解决这个?

  • 问题内容: 我正在使用Elasticsearch 1.7.3累积用于分析报告的数据。 我有一个包含文档的索引,其中每个文档都有一个名为“ duration”的数字字段(请求花费了几毫秒)和一个名为“ component”的字符串字段。可能有许多具有相同组件名称的文档。 例如。 我想生成一份报告,说明每个组件: 此组件的所有“持续时间”字段的总和。 此总和在 所有 文档的总期限中所占的百分比。在我的

  • 问题内容: 诚然,我不太了解ES的分析部分。这是索引布局: 您可以看到我尝试对主机名字段使用自定义分析器。当我使用此查询查找名为“ WIN_1”的主机时,这种工作方式如下: 问题是它还会返回其中包含1的任何主机名。使用端点,我可以看到数字也被标记。 我想做的就是搜索WIN,并找回名称中带有WIN的所有主机。但是我还需要能够搜索WIN_1并找回确切的主机或名称中带有WIN_1的任何主机。以下是一些测