前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Elasticsearch(五)

Elasticsearch(五)

作者头像
张凝可
发布2019-08-21 22:34:28
4760
发布2019-08-21 22:34:28
举报
文章被收录于专栏:技术圈技术圈

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。

在文档在加入倒排索引之前,会对数据进行一系列的分析。基本分为以下几个步骤。

概述

*字符过滤---使用字符过滤器转变字符。

*文本切分为分词---将文本切分为单个或多个分词。

*分词过滤---使用分词过滤器转变每个分词。

*分词索引---将这些分词存储到索引中。

以上几个步骤可以参考下图:

字符过滤器可以将 特定的的字符序列转变为其他的字符序列,比如将 I love u 2 转换为I love you too.

文本切分为分词,实际上是利用分词器将文本切分为分词,英文可以表示为token,比如 share your experience with NoSql and big data technologies分解为share,your,experience,with,NoSql,and,big,data,technologies.在分词完成后并不是直接对token建立倒排索引,而是将每个分词运用分词过滤器,分词作为输入,输入到分词过滤器中,根据需要进行修改、添加或者是删除,最为常用的分词过滤器小写分词过滤器,这也是为了保证在搜索词条“nosql”的时候可以找回“NoSql”。另外还有其他两种常用的分词过滤器,一种是停用词分词过滤器,可以删除停用词。另一种是同义词分词过滤器,比如讲token"tools"作为“technologies”作为同义词进行添加。

在分词经历了零个或者是多个分词过滤器后,它们被发送到Lucene进行文档的索引。

对这些分析器的设置可以在索引创建时,可以在elasticsearch配置文件中进行配置,还可以在映射中指定某个字段的分析器。

在索引创建时添加分析器

代码语言:javascript
复制
curl -XPOST 'localhost:9200/index' -d '
{
    "settings":{
    "number_of_shards":2,
    "number_of_replicas":1
        },
    "mappings":{}
}'

在setting中可以对索引的分析进行设置。

代码语言:javascript
复制
curl -XPOST 'localhost:9200/index' -d '
{
    "settings":{
    "number_of_shards":2,
    "number_of_replicas":1,
    "index": {
      "analysis": {
        "analyzer": {
          "myCustomAnalyzer": {
            "type": "custom",
            "tokenizer": "myCustomTokenizer",
            "filter": ["myCustomFilter1", "myCustomFilter2"],
            "char_filter": ["myCustomCharFilter"]
          }
        },
        "tokenizer": {
          "myCustomTokenizer": {
            "type": "letter"
          },
          "myCustomNGramTokenizer": {
            "type" : "ngram",
            "min_gram" : 2,
            "max_gram" : 3
          }

        },
        "filter": {
          "myCustomFilter1": {
            "type": "lowercase"
          },
          "myCustomFilter2": {
            "type": "kstem"
          }
        },
        "char_filter": {
          "myCustomCharFilter": {
            "type": "mapping",
            "mappings": ["ph=>f", " u => you ", "ES=>Elasticsearch"]
          }
        }
      }
    }
  },
    "mappings":{}
}'

在elasticsearch的配置中添加分析器

在索引创建的时候设置分析器,不需要重启ES就可以修改分析器,但是在es的配置中指定分析器,那么需要重启es后才能使得分析器的修改生效,在elasticsearch.yml中设置分析器。

在映射中指定某个的字段的分析器

代码语言:javascript
复制
{
     "mappings" : {
    "group" : {
      "_source" : {
        "enabled" : true
      },
      "_all" : {
        "enabled" : true
      },
      "properties" : {
        "organizer" : { "type" : "string" },
        "name" : { "type" : "string","analyzer":"myCustomAnalyzer" },
      }
    }
  }


}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年07月30日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • 在索引创建时添加分析器
  • 在elasticsearch的配置中添加分析器
  • 在映射中指定某个的字段的分析器
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档