当前位置:首页 > 财经

elasticsearch入门教程 ElasticSearch最全详细使用教程:入门、索引管理、映射详解、索引别名、分词器、文档管理、路由、搜索详解

墨墨入门:我们分享了弹性搜索最全面最详细的教程:简介,索引管理,映射细节。本文详细介绍了弹性搜索的索引别名、单词分隔符、文档管理、路由和搜索细节。

I .索引别名

1.别名的用途

如果要一次查询,可以查询多个索引。

如果您想通过索引视图来操作索引,就像数据库中的视图一样。

索引的别名机制是我们可以在一个视图中操作集群中的索引,可以是多个索引,一个索引,也可以是一个索引的一部分。

2.创建新索引时定义别名

PUT /logs_20162801 { "mappings": { "type": { "properties": { "year": {"type": "integer"} } } }, <!-- 定义了两个别名 --> "aliases": { "current_day": {}, "2016": { "filter": { "term": {"year": 2016} } } } }

3.创建别名/_别名

为索引测试1创建别名alias1

POST /_aliases { "actions": [ { "add": { "index": "test1", "alias": "alias1"} } ] }

4.删除别名

POST /_aliases { "actions": [ { "remove": { "index": "test1", "alias": "alias1"} } ] }

也可以这样写

DELETE/{index}/_alias/{name}

5.批量操作别名

删除索引测试1的别名alias1,同时添加索引测试2的别名alias1

POST /_aliases { "actions": [ { "remove": { "index": "test1", "alias": "alias1"} }, { "add": { "index": "test2", "alias": "alias1"} } ] }

6.为多个索引定义相同的别名

模式1:

POST /_aliases { "actions": [ { "add": { "index": "test1", "alias": "alias1"} }, { "add": { "index": "test2", "alias": "alias1"} } ] }

模式2:

POST /_aliases { "actions": [ { "add": { "indices": ["test1", "test2"], "alias": "alias1"} } ] }

注意:只能按多索引别名搜索,不能按id索引文档和获取文档。

模式3:通过通配符*模式指定要别名的索引

POST /_aliases { "actions": [ { "add": { "index": "test*", "alias": "all_test_indices"} } ] }

注意:在这种情况下,别名是一个时间点别名,它别名所有匹配的当前索引,并且在添加/删除与此模式匹配的新索引时,它不会自动更新。

7.带过滤器的别名

索引中需要字段

PUT /test1 { "mappings": { "type1": { "properties": { "user": { "type": "keyword" } } } } }

过滤器由查询DSL定义,将对所有搜索、计数,

DeleteByQueryandMore LikeThis 操作。POST /_aliases{"actions": [{"add": {"index": "test1","alias": "alias2","filter": { "term": { "user": "kimchy"} }}}]}

8.路由别名

路由值可以在别名定义中指定,别名定义可以与筛选器一起使用,以限制操作的碎片并避免其他不必要的碎片操作。

POST /_aliases{"actions": [{"add": {"index": "test","alias": "alias1","routing "/>

1.知道单词分隔符

1.1分析仪

在专家系统中,分析器由以下三个组件组成:

字符过滤器:字符过滤器,对文本进行字符过滤处理,如处理文本中的html标签字符。处理后交给分词器分词。一个分析器可以包含0个或更多的字符过滤器,其中许多是按配置顺序处理的。

分词器:分词器,用于对文本进行分词。分析器是必需的,并且只能包含一个标记器。

标记过滤器:一个术语过滤器,它过滤由标记器分隔的单词。如小写转换、停用词处理、同义词处理等。一个分析器可以包含0个或多个术语过滤器,这些过滤器按照配置的顺序进行过滤。

1.2如何测试单词分隔符

POST _analyze{"analyzer": "whitespace","text": "The quick brown fox."}POST _analyze{"tokenizer": "standard","filter": [ "lowercase", "asciifolding "/>

立场:是什么字

偏移:单词的偏移位置

2.内置字符过滤器

带字符过滤器

Html_strip:过滤Html标记并解码html实体,如&:。

映射字符过滤器

映射:用指定的字符串替换文本中的字符串。

模式替换字符过滤器

Pattern_replace:执行正则表达式替换。

2.1超文本标记语言带字符过滤器

POST _analyze{"tokenizer": "keyword","char_filter": [ "html_strip"],"text": "<p>I'm so <b>happy</b>!</p>"}

在索引中配置:

PUT my_index{"settings": {"analysis": {"analyzer": {"my_analyzer": {"tokenizer": "keyword","char_filter": ["my_char_filter"]}},"char_filter": {"my_char_filter": {"type": "html_strip","escaped_tags": ["b"]}}}}}

转义标记用于指定异常的标记。如果没有异常标签需要配置,这里就不用定制了,html_strip直接用在上面的my_analyzer中

测试:

POST my_index/_analyze{"analyzer": "my_analyzer","text": "<p>I'm so <b>happy</b>!</p>"}

2.2映射字符过滤器

官网链接:https://www.elastic.co/guide/en/elastic搜索/参考/当前/分析-映射-charfilter.html

PUT my_index{"settings": {"analysis": {"analyzer": {"my_analyzer": {"tokenizer": "keyword","char_filter": ["my_char_filter"]}},"char_filter": {"my_char_filter": {"type": "mapping "/>

2.3模式替换字符过滤器

官网链接:https://www.elastic.co/guide/en/elastic搜索/参考/当前/分析-模式-替换-charfilter.html

PUT my_index{"settings": {"analysis": {"analyzer": {"my_analyzer": {"tokenizer": "standard","char_filter": ["my_char_filter"]}},"char_filter": {"my_char_filter": {"type": "pattern_replace","pattern": "(d+)-(?=d)","replacement": "$1_"}}}}}

测试

POST my_index/_analyze{"analyzer": "my_analyzer","text": "My credit card is 123-456-789"}

3.内置标记器

官方网站链接:https://www.elastic.co/guide/en/elastic搜索/参考/当前/分析-令牌化器

StandardTokenizerLetterTokenizerLowercaseTokenizerWhitespaceTokenizerUAXURL Email TokenizerClassicTokenizerThaiTokenizerNGramTokenizerEdgeNGram TokenizerKeywordTokenizerPatternTokenizerSimplePattern TokenizerSimplePattern Split TokenizerPathHierarchy Tokenizer

分词器:ik _ smart,ik_max_word在集成中文分词器Ikanalyzer中提供

测试标记器

POST _analyze{"tokenizer": "standard","text": "张三说的确实在理"}POST _analyze{"tokenizer": "ik_smart","text": "张三说的确实在理"}

4.内置令牌过滤器

ES内置了很多tokenfilters,详情:https://www . elastic . co/guide/en/elastosearch/reference/current/analysis-tokenizers . html。

小写令牌过滤器:小写到小写

停止令牌过滤器:停止单词过滤器

同义词标记过滤器:同义词过滤器

描述:中文分词器Ikanalyzer有自己的停用词过滤功能。

4.1同义词标记过滤器同义词过滤器

PUT /test_index{"settings": {"index": {"analysis": {"analyzer": {"my_ik_synonym": {"tokenizer": "ik_smart","filter": ["synonym"]}},"filter": {"synonym": {"type": "synonym",<!-- synonyms_path:指定同义词文件(相对config的位置)-->"synonyms_path": "analysis/synonym.txt"}}}}}}

同义词定义格式

ES同义词格式支持solr和WordNet。

在analysis/同义词. txt中,以下同义词是以solr格式定义的

张三和李四

电饭锅,电饭锅= >;电饭煲

电脑= >:电脑,电脑

注意:

该文件必须是UTF 8编码

一行同义词,= >:表示形式标准化为

测试:通过例子的结果了解同义词的加工行为

POST test_index/_analyze{"analyzer": "my_ik_synonym","text": "张三说的确实在理"}POST test_index/_analyze{"analyzer": "my_ik_synonym","text": "我想买个电饭锅和一个电脑"}

5.内置分析仪

官网链接:https://www.elastic.co/guide/en/elastic搜索/参考/当前/分析-分析师. html

StandardAnalyzerSimpleAnalyzerWhitespaceAnalyzerStopAnalyzerKeywordAnalyzerPatternAnalyzerLanguageAnalyzersFingerprintAnalyzer

分析器:集成中文分词器中提供的IK _ SMART Ikanalyzer:IK _ SMART,ik_max_word

内置集成分析仪可以直接使用。如果它们不能满足我们的需求,我们可以结合字符过滤器、单词分隔符和术语过滤器来定义一个自定义分析器

5.1定制分析仪

配置参数:

PUT my_index8{"settings": {"analysis": {"analyzer": {"my_ik_analyzer": {"type": "custom","tokenizer": "ik_smart","char_filter": ["html_strip"],"filter": ["synonym"]}},"filter": {"synonym": {"type": "synonym","synonyms_path": "analysis/synonym.txt"}} } }}

5.2为字段指定断字符

PUT my_index8/_mapping/_doc{"properties": {"title": {"type": "text","analyzer": "my_ik_analyzer"}}}

如果该字段的查询需要使用不同的分析器,

PUT my_index8/_mapping/_doc{"properties": {"title": {"type": "text","analyzer": "my_ik_analyzer","search_analyzer": "other_analyzer"}}}

测试结果

PUT my_index8/_doc/1{"title": "张三说的确实在理"}GET /my_index8/_search{"query": {"term": {"title": "张三"}}}

5.3为索引定义默认单词分隔符

PUT /my_index10{"settings": {"analysis": {"analyzer": {"default": {"tokenizer": "ik_smart","filter": ["synonym"]}},"filter": {"synonym": {"type": "synonym","synonyms_path": "analysis/synonym.txt"}}}},"mappings": {"_doc": {"properties": {"title": {"type": "text"}}}}}

测试结果:

PUT my_index10/_doc/1{"title": "张三说的确实在理"}GET /my_index10/_search{"query": {"term": {"title": "张三"}}}

6.分析仪的使用顺序

我们可以为每个查询、字段和索引指定分词系统。

在索引阶段,专家系统将按以下顺序选择分词:

首先,选择字段映射定义中指定的分析器

如果字段定义中未指定分析器,则选择索引设置中定义的默认分析器。

如果在索引设置中没有定义默认分词,请使用标准分析器。

在查询阶段,ES会按照以下顺序选择分词:

The analyzer definedina full-text query.The search_analyzer definedinthe field mapping.The analyzer definedinthe field mapping.An analyzer named default_search inthe index settings.An analyzer named default inthe index settings.The standard analyzer.

第三,文档管理

1.创建新文档

指定文档id,添加/修改

PUT twitter/_doc/1{"id": 1,"user": "kimchy","post_date": "2009-11-15T14:12:12","message": "trying out Elasticsearch"}

添加,自动生成文档id

POST twitter/_doc/{"id": 1,"user": "kimchy","post_date": "2009-11-15T14:12:12","message": "trying out Elasticsearch"}

返回结果描述:

2.获取单个文档

HEAD twitter/_doc/11GETtwitter/_doc/1

不要获取文档的来源:

GETtwitter/_doc/1?_source=false

获取文档的来源:

GET twitter/_doc/1/_source{"_index": "twitter","_type": "_doc","_id": "1","_version": 2,"found": true,"_source": {"id": 1,"user": "kimchy","post_date": "2009-11-15T14:12:12","message": "trying out Elasticsearch"}}

获取存储字段

PUT twitter11{"mappings": {"_doc": {"properties": {"counter": {"type": "integer","store": false},"tags": {"type": "keyword","store": true} } } }}PUT twitter11/_doc/1{"counter": 1,"tags": ["red"]} GET twitter11/_doc/1?stored_fields=tags,counter

3.获取多个文档_管理

模式1:

GET /_mget{"docs": [{"_index": "twitter","_type": "_doc","_id": "1"},{"_index": "twitter","_type": "_doc","_id": "2""stored_fields": ["field3", "field4"]}]}

模式2:

GET /twitter/_mget{"docs": [{"_type": "_doc","_id": "1"},{"_type": "_doc","_id": "2"}]}

模式3:

GET /twitter/_doc/_mget{"docs": [{"_id": "1"},{"_id": "2"}]}

模式4:

GET /twitter/_doc/_mget{"ids": ["1", "2"]}

4.删除文档

指定要删除的文档id

DELETEtwitter/_doc/1

使用版本控制删除

DELETEtwitter/_doc/1?version=1

返回结果:

{"_shards": {"total": 2,"failed": 0,"successful": 2},"_index": "twitter","_type": "_doc","_id": "1","_version": 2,"_primary_term": 1,"_seq_no": 5,"result": "deleted"}

查询删除

POST twitter/_delete_by_query{"query": {"match": {"message": "some message"}}}

当文档中存在版本冲突时,不要放弃删除操作(记录冲突文档,继续删除其他复合查询的文档)

POST twitter/_doc/_delete_by_query?conflicts=proceed{"query": {"match_all": {}}}

通过任务api查看查询删除任务

GET _tasks?detailed=true&actions=*/delete/byquery

查询特定任务的状态

GET/_tasks/taskId:1

取消任务

POST_tasks/task_id:1/_cancel

5.更新文档

指定要修改的文档id

PUT twitter/_doc/1{"id": 1,"user": "kimchy","post_date": "2009-11-15T14:12:12","message": "trying out Elasticsearch"}

乐观锁定的并发更新控制

PUT twitter/_doc/1?version=1{"id": 1,"user": "kimchy","post_date": "2009-11-15T14:12:12","message": "trying out Elasticsearch"}

返回结果

{"_index": "twitter","_type": "_doc","_id": "1","_version": 3,"result": "updated","_shards": {"total": 3,"successful": 1,"failed": 0},"_seq_no": 2,"_primary_term": 3}

6.ed update通过脚本更新文档

6.1准备文件

PUT uptest/_doc/1{"counter": 1,"tags": ["red"]}

6.2文件1的计数器+4

POST uptest/_doc/1/_update{"": {"source": "ctx._source.counter += params.count","lang "/>

1.集群组成

第一个节点启动

注意:必须首先启动主节点,它存储集群的元数据信息

节点2启动

描述:

在Node2启动之前,它将配置Cluster-name:ess Cluster-name:ess,然后配置ip地址信息discovery . Zen . ping . unicast . hosts:[" 10 . 0 . 1 . 11 "、" 10.0.1.12"],并配置自己的ip地址network . host:10 . 0 . 1 . 12;

Node2启动的时候会找到主节点Node1,告诉Node1我要加入集群。主节点Node1收到请求后,会查看Node2是否满足加入集群的条件。如果是,它会将node2的ip地址添加到元信息中,然后广播给集群中的其他节点。

新节点加入并将最新的元信息发送给其他节点进行更新

节点3..NodeN连接

注意:集群中所有节点的元信息与主节点一致,因为一旦添加新节点,主节点将通知其他节点同步元信息。

2.在集群中创建索引的过程

3.带索引的簇

4.如果群集中的某个节点出现故障,将重新选择主节点。

5.为群集中的文档编制索引

要索引文档:

1.节点2计算文档的路由值,以获得存储文档的片段(假设所选路由是片段0)。

2.将文档转发到片段0的主片段节点node 1(P0)。

3.node1对文档进行索引,并将文档同步索引到copy (R0)节点node3。

4.节点1将结果反馈给节点2

5.节点2响应

6.文件是如何传送的

文档应该保存在哪个切片上?

决定文档存储在哪个切片上是文档传送。在专家系统中,每个文档的存储切片通过以下计算获得:

shard= hash(routing) % number_of_primary_shards

参数描述:

路由是用于哈希计算的路由值,默认值是文档id值。我们可以在索引文档时通过路由参数指定其他路由值

Number_of_primary_shards:创建索引时指定的主碎片数

POST twitter/_doc?routing=kimchy{"user": "kimchy","post_date": "2009-11-15T14:12:12","message": "trying out Elasticsearch"}

路由参数(可以是多值的)可以用于索引、删除、更新和查询,以指定操作的切片。

创建索引时强制执行给定的路由值:

PUT my_index2{"mappings": {"_doc": {"_routing "/>

搜索步骤:搜索索引s0

1.node2解析查询。

2.节点2向索引s0的分区/副本(R1、R2、R0)节点发送查询

3.每个节点执行查询并将结果发送到节点2

4.节点2合并结果并做出响应。

8.主节点的工作是什么?

1.存储集群的元信息,例如集群的名称和集群中的节点

2.转发创建索引和索引文档的请求

3.与其他节点通信,告诉其他节点有新节点加入等。

来源:https://www.cnblogs.com/leeSmall/p/9195782.html

在线数据和云小程序“DBASK”问答,可以随时解惑。欢迎了解和关注。

在线问答

立即回复

1.《elasticsearch入门教程 ElasticSearch最全详细使用教程:入门、索引管理、映射详解、索引别名、分词器、文档管理、路由、搜索详解》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《elasticsearch入门教程 ElasticSearch最全详细使用教程:入门、索引管理、映射详解、索引别名、分词器、文档管理、路由、搜索详解》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/caijing/1076847.html

上一篇

红蚂蚁装饰 红蚂蚁装饰|崛起于90年代,绽放于繁华盛世,争做102年企业!

下一篇

女人没有衣服长什么样 为什么有人被《中国女孩没有穿衣自由》激怒了?

橘小春 书法落款月份日期雅称别名大全

橘小春 书法落款月份日期雅称别名大全

日历日昵称别名的完整集合 在阅读古文和诗词时,我们经常会遇到古人对季节、月份和日期的不同称呼,这增加了理解文本含义的难度,成为阅读中的“拦路虎”。现在把阅读时检索的积累收集在下面,供博主们一起吃。如有遗漏,请补充。非常感谢! 一月 农历正月初一:元日、香格里拉、朔日、陈元、施思、三朝、正日、...

玻璃隔断 关于玻璃隔断的节点绘制,看这一篇就够了!

  • 玻璃隔断 关于玻璃隔断的节点绘制,看这一篇就够了!
  • 玻璃隔断 关于玻璃隔断的节点绘制,看这一篇就够了!
  • 玻璃隔断 关于玻璃隔断的节点绘制,看这一篇就够了!

搜爱seo SEO优化:让搜索引擎爱上网站的几种方法

网站优化怎么才能让搜索引擎保持下去,让它在网站上长时间爬行?今天,分享六种让搜索引擎爱上你的网站的方法: 1.简明代码:网站代码是搜索引擎爬行的第一步。不要让很多搜索引擎不理解或者识别不好的代码出现在代码中。就像我们走路一样,当道路崎岖不平的时候,我们不想走一次就走两次。所以代码的简洁有利于...

垂直搜索引擎技术 可借鉴性极高的通用方案:垂直搜索引擎性能优化

  • 垂直搜索引擎技术 可借鉴性极高的通用方案:垂直搜索引擎性能优化
  • 垂直搜索引擎技术 可借鉴性极高的通用方案:垂直搜索引擎性能优化
  • 垂直搜索引擎技术 可借鉴性极高的通用方案:垂直搜索引擎性能优化

gogo搜索 从百度搜狗之间的竞争看我国搜索引擎整体走向|魔豆GOGO

  • gogo搜索 从百度搜狗之间的竞争看我国搜索引擎整体走向|魔豆GOGO
  • gogo搜索 从百度搜狗之间的竞争看我国搜索引擎整体走向|魔豆GOGO
  • gogo搜索 从百度搜狗之间的竞争看我国搜索引擎整体走向|魔豆GOGO
饮用水过滤器 饮用水如何过滤?

饮用水过滤器 饮用水如何过滤?

饮用水过滤示意图:  水是一种必要且昂贵的商品。它广泛应用于饮料生产。根据水源和水质的不同,处理工艺也不同。同样,不同的应用有不同的水质要求。 水源水最常用的处理工艺是粗澄清和去除大颗粒。一般选择经济的过滤器。洗瓶技术和饮料调配技术是对水质最重要的要求,必须保证没有外来微生物。聚醚砜膜过滤可...

仙灵脾别名 每天最少学一味中药——仙灵脾!

仙灵脾别名 每天最少学一味中药——仙灵脾!

仙脾的功效和作用  仙脾的功效 仙灵脾又叫钢钳、淫羊藿、仙灵脾、芳樟草、废弃曹彰、前两金、甘吉金、黄连组、三枝九叶草等。仙灵脾具有补肾壮阳、祛风除湿、强筋壮骨的功效,用于治疗阳痿、遗精、虚寒不孕、尿频、肾虚、哮喘咳嗽、腰膝酸软、风湿疼痛 药名:仙灵脾。 功效分类:补品、壮阳、补肾;祛风药。...

搜狗文章 哪些自媒体账号更容易被百度、360、搜狗等搜索引擎抓取

  • 搜狗文章 哪些自媒体账号更容易被百度、360、搜狗等搜索引擎抓取
  • 搜狗文章 哪些自媒体账号更容易被百度、360、搜狗等搜索引擎抓取
  • 搜狗文章 哪些自媒体账号更容易被百度、360、搜狗等搜索引擎抓取