ElasticSearch搜索引擎入门:framework-learning中的全文检索技术
ElasticSearch是目前全文搜索引擎的首选,它可以快速地储存、搜索和分析海量数据,在framework-learning项目中,ElasticSearch相关知识被详细整理在elasticsearch-learning/ElasticSearch.md文件中,为新手和普通用户提供了全面的学习资料。
什么是ElasticSearch?
ElasticSearch是一个基于Lucene的开源搜索引擎,维基百科、Stack Overflow、Github都在使用它。它对Lucene进行了封装,提供了REST API的操作接口,开箱即用,能够帮助用户高效地处理海量数据的搜索与分析任务。
ElasticSearch的核心概念
要学习ElasticSearch,首先需要了解几个基本概念:
- Index(索引):一系列文档的集合,类似于MySQL中的数据库。
- Type(类型):在Index里面可以定义不同的type,类似于MySQL中的表。
- Document(文档):类似于MySQL中的一条存储记录,为JSON格式,在Index下的不同type下,可以有许多的document。
- Shards(分片):在数据量很大的时候,进行水平扩展,提高搜索性能。
- Replicas(副本):防止某个分片的数据丢失,可以并行在备份数据里搜索提高性能。
ElasticSearch的查询语法
ElasticSearch提供了丰富的查询语法,以下是一些常用的API:
_cat API
_cat API可以帮助我们快速了解集群的基本情况,常用命令有:
cat:输出_cat api中所有支持的查询命令。cat health:检查es集群运行的情况。cat count:可以快速查询集群或者index中文档的数量。cat indices:查询当前集群中所有index的数据,包括index的分片数、document的数量、存储所用的空间大小等。
我们可以通过工具发送请求来测试集群健康情况,就像下图所示:
Search API
Search API有两种查询方式:REST request URI和REST request body。其中REST request body可以构建更复杂的查询条件,常用的查询类型有:
- term:查询时判断某个document是否包含某个具体的值,不会对被查询的值进行分词查询。
- match:将被查询值进行分词,然后用评分机制(TF/IDF)进行打分。
- Bool:结合其他真值查询,通常和
must(与)、should(或)、must_not(非)一起组合出复杂的查询。 - range:查询时指定某个字段在某个特定的范围,例如:
"range": {
"FIELD": {
"gte": 1,
"lte": 10
}
}
ElasticSearch查询示例
下面通过一些简单的示例来了解ElasticSearch的基本使用。
创建索引
PUT localhost:9200/test
输出:
{
"acknowledged": true,
"shards_acknowledged": true,
"index": "test"
}
插入数据
PUT localhost:9200/test/user/1
Body:
{
"username" : "张三",
"password" : "123546",
"age" : "18",
"yyyymmdd" : "2017-08-07T16:00:00"
}
查询所有数据
GET localhost:9200/test/user/_search
{
"query":{
"match_all":{}
}
}
通过这些简单的操作,我们可以初步体验ElasticSearch的强大功能。在framework-learning项目中,还有更多关于ElasticSearch的详细内容,等待你去探索学习。如果你想深入了解,可以查阅项目中的elasticsearch-learning/ElasticSearch.md文件。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考




