Elasticsearch-10.多字段特性及配置自定义Analyzer和Index Template和Dynamic Template

Elasticsearch

多字段特性及配置自定义Analyzer

多字段类型

在这里插入图片描述

Exact Values v.s Full Text

  • Excat values V.S Full Text
    • Exact Value:包括数字/日期/具体一个字符串(例如“Apple Store”)
      • Elasticseach 中的keyword
    • 全文本, 非结构化的文本数据
      • Elasticsearch 中的text

在这里插入图片描述

Exact Values不需要被分词

  • Elasticsearch 为每一个字段创建一个倒排索引
    • Exact Value在索引时,不需要做特殊的分词处理

在这里插入图片描述

自定义分词

  • 当 Elasticsearch自带的分词器无法满足时,可以自定义分词器。通过自组合不同的组
    件实现.
    • Character Filter
    • Tokenizer
    • Token Filter

Character Filters

  • 在Tokenizer之前对文本进行处理,例如增加删除及替换字符。可以配置
    多个Character Filters。 会影响Tokenizer的position和offset信息
  • 一些自带的Character Filters
    • HTML strip 一出除html标签
    • Mapping -字符串 替换
    • Pattern replace - -正则匹配替换

Tokenizer

  • 将原始的文本按照一 定的规则,切分为词(term or token)

  • Elasticsearch 内置的Tokenizers

    • whitespace/ standard / uax_ ur _email / pattern / keyword / path hierarchy
  • 可以用Java开发插件,实现自己的Tokenizer

Token Filters

  • 将Tokenizer输出的单词( term ),进行增加,修改,删除
  • 自 带的Token Filters
    • Lowercase / stop / synonym (添加近义词)

设置一个Custom Analyzer

在这里插入图片描述

API

PUT logs/_doc/1
{"level":"DEBUG"}

GET /logs/_mapping

POST _analyze
{
  "tokenizer":"keyword",
  "char_filter":["html_strip"],
  "text": "<b>hello world</b>"
}


POST _analyze
{
  "tokenizer":"path_hierarchy",
  "text":"/user/ymruan/a/b/c/d/e"
}



#使用char filter进行替换
POST _analyze
{
  "tokenizer": "standard",
  "char_filter": [
      {
        "type" : "mapping",
        "mappings" : [ "- => _"]
      }
    ],
  "text": "123-456, I-test! test-990 650-555-1234"
}

//char filter 替换表情符号
POST _analyze
{
  "tokenizer": "standard",
  "char_filter": [
      {
        "type" : "mapping",
        "mappings" : [ ":) => happy", ":( => sad"]
      }
    ],
    "text": ["I am felling :)", "Feeling :( today"]
}

// white space and snowball
GET _analyze
{
  "tokenizer": "whitespace",
  "filter": ["stop","snowball"],
  "text": ["The gilrs in China are playing this game!"]
}


// whitespace与stop
GET _analyze
{
  "tokenizer": "whitespace",
  "filter": ["stop","snowball"],
  "text": ["The rain in Spain falls mainly on the plain."]
}


//remove 加入lowercase后,The被当成 stopword删除
GET _analyze
{
  "tokenizer": "whitespace",
  "filter": ["lowercase","stop","snowball"],
  "text": ["The gilrs in China are playing this game!"]
}

//正则表达式
GET _analyze
{
  "tokenizer": "standard",
  "char_filter": [
      {
        "type" : "pattern_replace",
        "pattern" : "http://(.*)",
        "replacement" : "$1"
      }
    ],
    "text" : "http://www.elastic.co"
}




Index Template和Dynamic Template

管理很多的索引|

  • 集群上的索引会越来越多, 例如,你会为你的日志每天创建-个索引
    • 使用多个索引可以让你更好的管理你的数据,提高性能
    • logs-2019-05-01
    • logs- -2019-05- -02
    • logs- 2019-05-03

什么是Index Template

  • Index Templates -帮助你设定Mappings和Settings,并按照一定 的规则,
    自动匹配到新创建的索引之上
    • 模版仅在一个索引被新创建时, 才会产生作用。修改模版不会影响已创
      建的索引
    • 你可以设定多 个索引模版,这些设置会被“merge”在一起
    • 你可以指定 “order”的数值,控制“merging”的过程

两个Index Templates

在这里插入图片描述

Index Template的工作方式

  • 当一个索|被新创建时
    • 应用Elasticsearch默认的settings和mappings
    • 应用order数值低的Index Template中的设定
    • 应用order高的Index Template中的设定,之前的设定会被覆盖
    • 应用创建索引时,用户所指定的Settings和Mappings, 并覆盖之前模版中的设定

什么是Dynamic Template

  • 根据Elasticsearch识别的数据类型,结合字段名称,来动态设定字段类型

     +  所有的字符串类型都设定成Keyword, 或者关闭keyword字段
     
    +  is开头的字段都设置成boolean 
    
    +  long_ 开头的都设置成long类型
    

Dynamic T emplate

在这里插入图片描述

匹配规则参数

在这里插入图片描述

API


#数字字符串被映射成text,日期字符串被映射成日期
PUT ttemplate/_doc/1
{
	"someNumber":"1",
	"someDate":"2019/01/01"
}
GET ttemplate/_mapping


#Create a default template
PUT _template/template_default
{
  "index_patterns": ["*"],
  "order" : 0,
  "version": 1,
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas":1
  }
}


PUT /_template/template_test
{
    "index_patterns" : ["test*"],
    "order" : 1,
    "settings" : {
    	"number_of_shards": 1,
        "number_of_replicas" : 2
    },
    "mappings" : {
    	"date_detection": false,
    	"numeric_detection": true
    }
}

#查看template信息
GET /_template/template_default
GET /_template/temp*


#写入新的数据,index以test开头
PUT testtemplate/_doc/1
{
	"someNumber":"1",
	"someDate":"2019/01/01"
}
GET testtemplate/_mapping
get testtemplate/_settings

PUT testmy
{
	"settings":{
		"number_of_replicas":5
	}
}

put testmy/_doc/1
{
  "key":"value"
}

get testmy/_settings
DELETE testmy
DELETE /_template/template_default
DELETE /_template/template_test



#Dynaminc Mapping 根据类型和字段名
DELETE my_index

PUT my_index/_doc/1
{
  "firstName":"Ruan",
  "isVIP":"true"
}

GET my_index/_mapping
DELETE my_index
PUT my_index
{
  "mappings": {
    "dynamic_templates": [
            {
        "strings_as_boolean": {
          "match_mapping_type":   "string",
          "match":"is*",
          "mapping": {
            "type": "boolean"
          }
        }
      },
      {
        "strings_as_keywords": {
          "match_mapping_type":   "string",
          "mapping": {
            "type": "keyword"
          }
        }
      }
    ]
  }
}


DELETE my_index
#结合路径
PUT my_index
{
  "mappings": {
    "dynamic_templates": [
      {
        "full_name": {
          "path_match":   "name.*",
          "path_unmatch": "*.middle",
          "mapping": {
            "type":       "text",
            "copy_to":    "full_name"
          }
        }
      }
    ]
  }
}


PUT my_index/_doc/1
{
  "name": {
    "first":  "John",
    "middle": "Winston",
    "last":   "Lennon"
  }
}

GET my_index/_search?q=full_name:John
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
elasticsearch-analysis-dynamic-synonym-master.zip是一个压缩文件,其中包含用于Elasticsearch的动态同义词分析插件。Elasticsearch是一个开源的分布式搜索引擎,用于快速检索和分析大量数据。 这个插件的作用是允许用户根据需要动态更新和管理同义词,以提高搜索的准确性和覆盖范围。在搜索引擎中,同义词是指具有相似意义的不同词语,如"汽车"和"车辆"。通过使用同义词分析插件,搜索引擎可以将搜索词与同义词匹配,从而拓宽搜索结果的范围。 要使用这个插件,首先需要将压缩文件解压缩到适当的目录中。然后,将插件添加到Elasticsearch的插件目录中,并重新启动Elasticsearch服务。一旦插件安装完成,就可以开始配置和使用动态同义词分析器。 在使用这个插件时,用户可以定义一个同义词文件,其中包含需要用于匹配的同义词对。插件将定期(可以通过设置来调整时间间隔)扫描这个同义词文件,并将其加载到内存中。然后,当用户执行搜索操作时,分析器将根据这些同义词对修改搜索词,并在搜索过程中考虑到它们。 动态同义词分析插件在大型搜索平台和电子商务领域中非常有用。它可以通过改进搜索引擎的召回率和精确度来提供更好的搜索体验。同义词的动态管理也使得系统可以灵活应对新的同义词和词语变化。 总之,elasticsearch-analysis-dynamic-synonym-master.zip是一个用于Elasticsearch的动态同义词分析插件,它可以帮助用户优化搜索结果,提高搜索准确性和广度,并灵活应对同义词和词语变化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值