搜索引擎之Elasticsearch的秘密

蒋志伟
原创 1088       2019-04-15  


还记得我们的超萌搜索引擎——万事通(knowsmore)吗?之前我们深入介绍了内存分配和分词索引,今天我们就来深入解剖它的秘密!



善于联想

电影中来到Google柜台前的用户,每说一个字一个词,万事通就可以展开多种联想,这或许得益于它多样化的查询方式。


Elasticsearch 是一个分布式的基于 RESTful 接口的搜索和分析引擎,使用的是DSL语法,下面介绍几个常用的搜索语句:

1、 简单条件查询,term是精确查询

2、 比较查询

3、 符合多个条件查询,terms类似数据库中的in语句

4、 多条件查询,bool must里面可以写多个查询条件,且可以是不同类型的查询



更多查询方式可以参考官网

https://www.elastic.co/guide/en/elasticsearch/reference/6.3/search.html



无所不知,反应极快

它似乎掌管着不可估量的数量级的知识库,且总能快速、准确地找到需要的内容,这一切都要归功于它背后的“索引库”!


Elasticsearch是一个建立在全文搜索引擎 Apache Lucene(TM) 基础上的搜索引擎,在实际应用中,一批大数据通常会按照天或者周去创建索引库,方便以后对于索引按照天或者周去管理,但如果我们需要通过手工指定每个索引库的配置信息(settings和mappings)的话就很麻烦了,这时候就引入了模板,我们就可以使用预定义的模板进行创建。


HOWEVER!


当一批大数据按照天或者星期写入ElasticSearch的时候,这一批数据会有多个索引,搜索的时候就会很不方便,无法一次搜索所有数据,这个时候怎么办呢?给这批数据创建一个相同的别名,就可以通过这个别名去搜索完整的数据了。


了解了秘密,我们来看看实操。


模板和别名的创建

 

请求


_template:模板关键字

template_test:模板名称

消息体

template:索引匹配规则

mappings:索引结构

aliases:别名


一、 模板查询

使用模板名称去查询


二、 模板和别名效果


分别向索引test-20190326、test-20190327、test-20190328写入一条数据

1、查询test-20190326的mapping,数据结构是按照模板建立


2、查询三个索引的数据,每个索引的数据都只有一条,然后用别名test去查询,发现可以一次查询出所有数据


更多模板和索引的实际应用,敬请期待下回分享!



恒生技术之眼原创文章,未经授权禁止转载。详情见转载须知

联系我们

恒 生 技 术 之 眼