Elasticsearch 中的分析器有什么用?

2024-04-21

我在理解弹性搜索分析器时遇到一些问题。它的用途是什么以及如何使用它?

From 本文 https://www.elastic.co/blog/found-text-analysis-part-1,有来自源文本的分词器和分词过滤器。我是否无法理解来自 URL 或索引内文本的源文本?从文章中,它说要执行“GET

"

这是来自 URL,但是这个分析器与搜索我的索引中的文本相关吗?

如果我的问题听起来很愚蠢,我很困惑并且很抱歉。


Analyzer https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-analyzers.html#analysis-analyzers是一个包装器,它包装了三个函数:

  • 字符过滤器 https://www.elastic.co/guide/en/elasticsearch/reference/current/analyzer-anatomy.html#_character_filters:主要用于剥离一些未使用的字符或者改变一些字符。
  • 分词器 https://www.elastic.co/guide/en/elasticsearch/reference/current/analyzer-anatomy.html#_tokenizer:将文本分解为单独的标记(或单词),并根据某些因素(空格、ngram 等)进行分解。
  • 令牌过滤器 https://www.elastic.co/guide/en/elasticsearch/reference/current/analyzer-anatomy.html#_token_filters:它接收令牌,然后应用一些过滤器(例如将大写术语更改为小写)。

简而言之analyzer用于告诉elasticsearch 应如何对文本进行索引和搜索。

你正在寻找的是分析API https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-analyze.html#indices-analyze,这是了解分析器如何工作的一个非常好的工具。文本提供给此 API,与索引无关。

在你的情况下获取请求:

GET http://localhost:9200/_analyze?text=I%20sing%20he%20sings%20they%20are%20singing&analyzer=snowball

相当于:

GET _analyze
{
  "analyzer" : "snowball",
  "text" : "I sing he sings they are singing"
}

其输出:

{
  "tokens": [
    {"token": "i", "position": 1, ...},
    {"token": "sing", "position": 2, ...},
    {"token": "he", "position": 3, ...},
    {"token": "sing", "position": 4, ...},
    {"token": "sing", "position": 7, ...},
  ]
}

如中提到的article https://www.elastic.co/blog/found-text-analysis-part-1.

还有一件事,假设您在索引中定义了一个自定义分析器,它以您自己的方式组合执行字符过滤、标记化和标记过滤,并且您想检查它将如何标记文本,那么您可以使用_analyze终点与您的索引名称,即使在这种情况下,您也必须提供文本。

GET my_index/_analyze
{
  "analyzer" : "custom",
  "text" : "I sing he sings they are singing" --> You have to provide the text. 
}

为什么需要分析仪?

当您想要对文本或短语进行索引时,通常会使用分析器,将文本分解为单词非常有用,以便您可以搜索术语来获取文档。

Example:假设您有一个索引 (my_index),在该索引中您有一个文本字段(简介),并且您索引了一个文档,其中"intro":"你好,我是希德"如果您不使用分析器,那么这将存储为“嗨,我是 sid”。如果您想查询此文档,则必须编写完整的短语(查找 intro =“Hi There I am sid”的文档)。但是,如果这个短语被索引为标记,那么即使您查询标记(查找 intro="sid" 的文档),您也会获得该文档。

Note:默认情况下标准分析仪 https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-standard-analyzer.html#analysis-standard-analyzer用于所有文本字段。

希望能帮助到你 !

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Elasticsearch 中的分析器有什么用? 的相关文章

  • Elasticsearch - 如何获取文档的流行词列表

    我有一个临时索引 其中包含我需要审核的文档 我想按这些文档包含的单词对它们进行分组 例如 我有这些文件 1 aaa bbb ccc ddd eee fff 2 bbb mmm aaa fff xxx 3 hhhh aaa fff 所以 我想
  • spring-data-elasticsearch 在多个索引上搜索

    我的页面上有一个搜索字段 该搜索字段应该搜索多个索引 我可以毫无问题地搜索一个索引 如 spring data elasticsearch 文档中所述 但是 如果我搜索 例如 Foo 我希望得到以下列表作为按相关性排序的结果 title F
  • Elasticsearch 6.2 / Kibana查询:一字段必须存在,一字段不能存在

    我的愿望是搜索 field 存在且 fields b 不存在的文档 有没有办法使用 Kibana 中的 Lucene 查询语法 Kibana 的 发现 部分中的 搜索 字段 来执行此操作 我尝试过使用 缺失 字段 b没有成功 exists
  • 在 Elasticsearch 中过滤折叠结果

    我有一个弹性搜索索引 其中包含表示给定时间点实体的文档 当实体更改状态时 会创建带有时间戳的新文档 当我需要获取所有实体的当前状态时 我可以执行以下操作 GET https 127 0 0 1 9200 myindex search col
  • PHP Elastic Search 过滤查询字符串搜索

    所有人都希望使用过滤查询 其中结果应包含来自 query string 以及应用的 term filter 的数据 GET blog search query filtered query query string fields descr
  • 排除elasticsearch结果数据中的_id和_index字段

    如果简单地点击 api 每个文档中有 5 个字段 但我只想要这两个字段 user id 和 loc code 所以我在字段列表中提到 但它仍然返回一些不必要的数据 如 shards hits time out等 使用下面的查询在 chrom
  • AWS ElasticSearch:如何将策略应用于索引

    我们有一个 AWS ElasticSearch 域 正在向其中写入记录 文档 我现在已经在 Kibana 中创建了索引状态 生命周期管理 ISM ILM 策略 并且可以将该策略应用于 Kibana 中的索引 现在 我想在从处理索引写入的 J
  • Titan 加载弹性搜索问题

    我使用以下代码来加载泰坦 TitanFactory Builder config TitanFactory build config set storage backend berkeleyje config set storage dir
  • 使用elasticsearch按一天中的时间累积流量

    我正在接收来自大量客户端应用程序的请求 事件 我想使用elasticsearch 来找出我的最高流量点是什么时候 我尝试过的一件事是使用嵌套直方图进行过滤器聚合 然后使用嵌套的 术语 聚合 通过脚本字段获取一天中的不同时间 以下是我的尝试
  • 未能向 master 发送加入请求

    我使用的是elasticsearch版本1 3 0 重启数据节点后 无法检测到主节点 我收到错误failed to send join request to master 在错误日志中 app101 dGRBqTFTQfae76IFCjsM
  • 向 ElasticSearch 术语聚合添加其他字段

    索引文档如下 id 1 title Blah platform id 84 url http facebook com title Facebook 我想要的是按平台计数和输出统计数据 为了计数 我可以使用术语聚合platform id作为
  • 将 Elasticsearch 结果导出到 CSV 文件

    我正在尝试将使用以下查询找到的结果导出到桌面上的 CSV 中 这是我第一次使用 Elasticsearch 和 cURL 所以我对如何做到这一点感到困惑 from elasticsearch import Elasticsearch es
  • Elastic Search 5.x 嵌套多个查询 C#

    我将 C 与这些 nuget 包一起使用
  • Elasticsearch 崩溃后无法恢复

    磁盘空间不足 导致 Elasticsearch 分片崩溃 三个节点现在为红色 两个节点已恢复 它们的状态为黄色 ES 的 CPU 利用率为 150 内存利用率很高 正在尝试恢复它们 但似乎存在一些版本匹配冲突 我清理了磁盘空间并删除了分片的
  • 在 ElasticSearch 7+ 中,如何搜索所有文本字段?

    我想在 Elasticsearch 7 3 中存储的文档中搜索单词 我希望在以前版本的 Elasticsearch 上运行的一个示例是 query bool must match all oliver must not should fro
  • Elasticsearch 中的嵌套与对象

    有人可以解释 Elasticsearch 文档中 对象 和 嵌套 字段之间的区别吗 我知道默认情况下字段被定义为对象 我还知道我可以用这样的点访问对象字段 my field name my field title 等 对象的文档 http
  • Logstash删除类型并保留_type

    我有一个logstash 客户端和服务器 客户端将带有logstash的udp输出的日志文件发送到服务器 服务器也运行logstash来获取这些日志 在服务器上 我有一个 json 过滤器 它会在实际日志的字段中提取 json 格式的消息
  • 弹性搜索模糊匹配,精确匹配首先显示

    我想在查询中使用模糊匹配 但精确匹配显示在结果的顶部 我已经尝试过以下方法 return this gt client gt search array index gt self INDEX type gt self TYPE body g
  • 随着索引和文档数量恒定,elasticsearch 批量索引会随着时间的推移而变慢

    我遇到了使用 NET NEST 客户端和 ElasticSearch 进行批量索引的性能随着时间的推移 索引数量和文档数量恒定而降低的情况 我们正在奔跑ElasticSearch Version 0 19 11 JVM 23 5 b02在具
  • 如何使用 django-haystack 和 elasticsearch 后端进行模糊搜索?

    看起来好像elasticsearch支持模糊查询 http www elasticsearch org guide reference query dsl fuzzy query http www elasticsearch org gui

随机推荐