Elasticsearch入门

本文深入解析Elasticsearch的9300与9200端口功能区别,阐述倒排索引原理及其相对于正向索引的优势,提供高级查询技巧,包括精确与模糊查询、分页及过滤,助您掌握Elasticsearch核心技能。

Elasticsearch入门

1、ES9300端口号与9200区别
2、Elasticsearch倒排索引原理
3、Elasticsearch高级查询
4、ElasticsearchIK分词器原理
5、ElasticsearchIK中文分词器
6、IK自定义中文词典热词
7、Elasticsearch Mapping映射

 

1.区别:

9300与9200区别

9300端口: ES节点之间通讯使用
9200端口: ES节点 和 外部 通讯使用

 

9300是TCP协议端口号,ES集群之间通讯端口号

9200端口号,暴露ES RESTful接口端口号       kabana就是用的这个哈  Put /xxxxxxx...     Get /xxxxx

 

修改下面:

 访问:  与之对应呀!

 

Restful 接口 对文档进行操作 进行增删改查~

 

2.倒排索引

  为什么倒排索引比B+数查询速率还要快?

  

正向索引

正排表是以文档的ID为关键字,表中记录文档中每个字的位置信息,查找时扫描表中每个文档中字的信息直到找出所有包含查询关键字的文档。

这种组织方法在建立索引的时候结构比较简单,建立比较方便且易于维护;因为索引是基于文档建立的,若是有新的文档加入,直接为该文档建立一个新的索引块,挂接在原来索引文件的后面。若是有文档删除,则直接找到该文档号文档对应的索引信息,将其直接删除。但是在查询的时候需对所有的文档进行扫描以确保没有遗漏,这样就使得检索时间大大延长,检索效率低下。     

尽管正排表的工作原理非常的简单,但是由于其检索效率太低,除非在特定情况下,否则实用性价值不大。

 

倒排索引

倒排表以字或词为关键字进行索引,表中关键字所对应的记录表项记录了出现这个字或词的所有文档,一个表项就是一个字表段,它记录该文档的ID和字符在该文档中出现的位置情况。

由于每个字或词对应的文档数量在动态变化,所以倒排表的建立和维护都较为复杂,但是在查询的时候由于可以一次得到查询关键字所对应的所有文档,所以效率高于正排表。在全文检索中,检索的快速响应是一个最为关键的性能,而索引建立由于在后台进行,尽管效率相对低一些,但不会影响整个搜索引擎的效率。

 

 

正排索引是从文档到关键字的映射(已知文档求关键字),倒排索引是从关键字到文档的映射(已知关键字求文档)。

 

  比如:

   

文档内容:

序号

文档内容

1

小俊是一家科技公司创始人,开的汽车是奥迪a8l,加速爽。

2

小薇是一家科技公司的前台,开的汽车是保时捷911

3

小红买了小薇的保时捷911,加速爽。

4

小明是一家科技公司开发主管,开的汽车是奥迪a6l,加速爽。

5

小军是一家科技公司开发,开的汽车是比亚迪速锐,加速有点慢

 

倒排索引会对以上文档内容进行关键词分词,可以使用关键次直接定位到文档内容。

 

单词ID

单词

倒排列表docId

1

1,2,3,4,5

2

一家

1,2,4,5

3

科技公司

1,2,4,5

4

开发

4,5

5

汽车

1,2,4,5

6

奥迪

1,4

7

加速爽

1,3,4

8

保时捷

2,3

9

保时捷911

2

10

比亚迪

5

 

搜索 “奥迪”  

传统的正向索引:   去每个文档搜索

          倒排索引:   基于文档内容进行关键词分词,利用关键词定位       就是个词库

 

3.高级查询

  简单查询:

   GET /toov5/user/2 

 查询user(表)下面的所有数据:

  GET /toov5/user/_search  

 根据多个Id查询:

GET /toov5/user/_mget
{
"ids":["1","2"]
}

 查询年龄为66的:

 GET  /toov5/user/_search?q=age:66

 复杂条件:区间  10到70的

 GET  /toov5/user/_search?q=age:[10 TO  70]

 对年龄降序排列:

GET  /toov5/user/_search?q=age:[10 TO  70]&sort=age

 分页查询

 GET  /toov5/user/_search?q=age:[10 TO  70]&sort=age:desc&from=0&size=2     #前两条数据

 

DSL语言查询与过滤

es中的查询请求有两种方式,一种是简易版的查询,另外一种是使用JSON完整的请求体,叫做结构化查询(DSL)。
由于DSL查询更为直观也更为简易,所以大都使用这种方式。
DSL查询是POST过去一个json,由于post的请求是json格式的,所以存在很多灵活性,也有很多形式。

##term 是精确匹配  不做分词查询!  

GET toov5/user/_search
{
"query": {
"term": {
"age": 66
}
}

}

竞争对手是 like  哈哈   模糊查询   马云相关的    match支持分词查询  “马”

GET toov5/user/_search
{
"query": {
"match": {
"name": "马"
}
}

}

term查询不会对字段进行分词查询,会采用精确匹配。  也可以做分页

match会根据该字段的分词器,进行分词查询。

把马云拆了  哈哈   

 

分页:

GET toov5/user/_search
{ "from":0,
"size": 2,
"query": {
"match": {
"name": "马"
}
}
}

还有 filter多虑    年龄大于21 小于51岁的    _source表示限制展示哪些字段

GET /toov5/user/_search
{
"query": {
"bool": {
"must": [{
"match_all": {}
}],
"filter": {
"range": {
"age": {
"gt": 21,
"lte": 51
}
}

}

}

},
"from": 0,
"size": 10,
"_source": ["name", "age"]

}

 

posted @ 2019-01-21 00:30 toov5 阅读( ...) 评论( ...) 编辑 收藏
### Elasticsearch 入门教程 #### 了解基本概念 Elasticsearch 是一种分布式搜索引擎,支持全文检索、结构化检索以及分析功能。其核心组件包括索引结构、查询解析器、查询执行器和缓存机制等[^1]。 #### 安装与配置 为了能够处理特定语言(如中文),可能需要安装额外的插件来增强分词能力。例如,可以通过如下命令安装 `IK Analyzer` 插件: ```bash ./elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.2/elasticsearch-analysis-ik-7.6.2.zip ``` 此操作将扩展 Elasticsearch 对于复杂文本的理解和支持[^2]。 #### 集群组建 当首次启动单个节点时,默认情况下它会自动形成名为 "elasticsearch" 的集群,并成为该集群的一部分。这意味着即使只有一个实例也在运行着完整的集群环境[^3]。 #### 数据管理 在 Elasticsearch 中,数据被存储为文档的形式,这些文档会被分配到不同的索引内。每个索引可以看作是一个逻辑容器,用于保存相似类型的记录集合。通过定义映射(mapping),用户能指定每种字段的数据类型及其属性。 #### 查询方式 对于简单的关键词匹配需求来说,可以直接利用 RESTful API 发送 HTTP 请求来进行搜索请求;而对于更复杂的条件组合,则需构建 JSON 格式的 DSL (Domain Specific Language) 来表达意图。DSL 提供了一套灵活而强大的语法体系,允许开发者精确控制查找范围及排序规则等细节。 #### 实际案例:中文关键字搜索 假设要在一个包含大量文章摘要的信息库中寻找关于“人工智能”的资料,那么就可以编写类似于下面这样的查询语句: ```json GET /article/_search { "query": { "match_phrase": { "content": "人工智能" } } } ``` 这段代码表示从名称为 `article` 的索引里筛选出那些内容(`content`)中含有短语 “人工智能” 的条目。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值