版权声明 本站原创文章 由 萌叔 发表
转载请注明 萌叔 | http://vearne.cc

前言

这是我近期将会在公司内部进行的分享大纲,也在这里分享给网友

1. ES简介

ElasticSearch是Elastic公司开发的开源分布式搜索引擎

  • 开源
  • 分布式
  • 全文检索
  • OLAP(结合kibana使用)
  • Resful API
  • NoSQL database

1.1 和Lucene的关系

{
  "name": "uf_-1wJ",
  "cluster_name": "UT",
  "cluster_uuid": "xvGp84DyQVOSxLXP43oDpA",
  "version": {
    "number": "6.2.4",
    "build_hash": "ccec39f",
    "build_date": "2018-04-12T20:37:28.497551Z",
    "build_snapshot": false,
    "lucene_version": "7.2.1",
    "minimum_wire_compatibility_version": "5.6.0",
    "minimum_index_compatibility_version": "5.0.0"
  },
  "tagline": "You Know, for Search"
}

简单而言,ES是Lucene的分布式版本,当然扩充了接口和在线分析功能

1.2 基本概念

1.2.1 索引层面
  • index
  • type
  • doc
  • term
1.2.2 倒排索引

正常顺序
doc -> term

term -> doc

1.2.2 集群层面

Cluster
Node
Shard
Segment

多种角色
1) Master-eligible node
2)Data node
3) Ingest node
4) Tribe node
5) coordinating node

屏幕快照 2018-12-20 上午11.15.50.png-230kB

1.3 通常的架构

5c17403484ecc.png-39.1kB

2. 建立索引&查询

2.1 Lucene底层结构

lucene底层结构

2.2 查询语法

Lucene查询语法

age:[10,20] AND name:李四

ES的查询语法

{
    "from": 0,
    "size": 200,
    "query": {
        "bool": {
            "must": [{
                    "range": {
                        "age": {
                            "from": 10,
                            "to": 20
                        }
                    }
                },
                {
                    "match": {
                        "name": "李四"
                    }
                }
            ]
        }
    }
}
{
    "query": {
        "query_string" : {
            "query" : "age:[10,20] AND name:李四"
        }
    }
}
{
    "query": {
        "wildcard": {
            "name": {
                "value": "王*"
            }
        }
    }
}

term/match 的区别

2.3 查询过程

query and fetch
image_1cv4sh7ko16hl1ojf5kcdjk90c12.png-37kB

2.3 关于分词器的作用(Analyzer)

3. SQL&Luke

3.1 SQL

3.2 Luke

image_1cv4s6rodlto7d41b4pjii1295l.png-287.5kB

4. 参考资料

4.1 Elasticsearch Reference

4.2 中文官方社区

4.3 ElasticSearch源码解析与优化实践

s29931477.jpg-47.6kB

4.4 elasticsearch 权威指南

已经过时

4.5 Lucene实战

images.jpeg-23.3kB

4.6 lucene fileformat

fileformats v3.0.3
建议了解搜索引擎内部实现的读读这个


如果我的文章对你有帮助,你可以给我打赏以促使我拿出更多的时间和精力来分享我的经验和思考总结。

微信支付码

1 对 “ES内部分享”的想法;

  1. 感谢分享!已推荐到《开发者头条》:https://toutiao.io/posts/fv3t0v 欢迎点赞支持!使用开发者头条 App 搜索 334598 即可订阅《aotian的独家号》

发表评论

电子邮件地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据