elasticSearch基本使用

Mark:如果看完之后还是有疑问,去百度云盘:heima2019/阶段4 2.Elasticsearch(选学)文件夹下有教案,那个比较系统。

 

  1. Lucene就是一套全文检索编程API,基于Lucene对数据建立索引,进行查询。
  2. 现代企业开发中,更常用的是solr搜索服务器和ElasticSearch搜索服务器。

 

下载与安装

  1. ElasticSearch官网

https://www.elastic.co/products/elasticsearch

  1. 下载

  1. Windows系统下载zip版本,linux版本下载tar版本

已经下载好的Elasticsearch安装文件

解压目录

bin存放elasticsearch运行命令

config存放配置文件

lib存放elasticsearch运行依赖jar包

modules存放elasticsearch模块

plugins存放插件

  1. 运行D:\elasticsearch-2.4.0\bin\elasticsearch.bat文件(JAVA_HOME环境变量要提前配置好)
  2. 访问:http://127.0.0.1:9200

 

elasticsearch安装ESHead插件

1.切换到elasticsearch 的运行命令目录,如:D:\elasticsearch-2.4.0\bin,执行如下命令:

plugin.bat install mobz/elasticsearch-head

2.访问http://localhost:9200/_plugin/head/

 

ElasticSearch数据架构的主要概念分析

参考书籍:Elasticsearch服务器开发(第2版).pdf

  1. 全文检索:针对文本中每个词,创建词条建立索引,进行搜索。
  2. ElasticSearch操作服务器上的数据,通过Rest API

       操作ElasticSearch上数据,访问提供Rest API的URL地址,传递json数据给服务器

      

  1. 分析ElasticSearch数据架构的主要概念

1)索引对象(数据存在哪?):存储数据的表结构,任何搜索数据,存放在索引对象上

2)映射(数据怎么存?):数据如何存放到索引对象上,需要有一个映射配置,数据类型、是否存储、是否分词…

3)文档(存什么数据?):一条数据记录,存在索引对象上

4)文档类型(数据有哪些类型?):一个索引对象,存放多种类型数据,数据用文档类型进行标识

  1. Elasticsearch与传统数据库之间的关系

Elasticsearch—————— 传统关系型数据库

索引 ————————— 数据库

文档类型———————  表

文档 ————————   行

字段 ————————   列

  1. 编程步骤

1)建立索引对象

2)建立映射

3)存储数据【文档】

4)指定文档类型进行搜索数据【文档】

5)查询数据【文档】

 

ElasticSearch入门案例_创建文档自动创建索引[会用]

步骤整理:

  1. 建maven项目

   2.基于maven的pom导入坐标依赖

1)ElasticSearch2.4.0依赖lucene5.5.2

2)当直接在ElasticSearch建立文档对象时,如果索引不存在的,默认会自动创建,映射采用默认方式

3ElasticSearch服务默认端口9300

4Web管理平台端口 9200

  3.建立文档,自动创建索引

1)自动创建索引

2)自动创建索引映射

3)查看文档数据和文档类型

 

elasticsearch分片,副本和集群

 

 

ElasticSearch入门案例_搜索文档[会用]

  1. 查询数据,主要依赖QueryBuilder对象,可以通过QueryBuilders获取(下面几个方法重点练习)

1)boolQuery()              布尔查询,可以用来组合多个查询条件

2)fuzzyQuery()              相似度查询

3)matchAllQuery()           查询所有数据

4)regexpQuery ()           正则表达式查询

5)termQuery()               词条查询

6)wildcardQuery()           模糊查询

   2. 代码示例

一些函数的解释:

TermsBuilder: 构造聚合函数
 
AggregationBuilders: 创建聚合函数工具类
 
BoolQueryBuilder: 拼装连接(查询)条件
 
QueryBuilders: 简单的静态工厂”导入静态”使用。主要作用是查询条件(关系),如区间\精确\多值等条件
 
NativeSearchQueryBuilder: 将连接条件和聚合函数等组合
 
SearchQuery:生成查询
 
elasticsearchTemplate.query:进行查询
 
Aggregations:Represents a set of computed addAggregation.代表一组添加聚合函数统计后的数据

 

本篇主要重elasticsearch的搭建和基础概念之类的,实际项目中多用spring data elasticsearch使用,重点是自定义查询和原生nativeSearchQuery的查询。

可参照这位博主:https://blog.csdn.net/lihuanlin93/article/details/83448967  ,Spring data elasticsearch总结的很好,很全面。

讲nativeSearchQuery的使用,参考:https://blog.csdn.net/weixin_41133233/article/details/82927408

涉及到高阶功能,组合查询、Aggregation聚合查询,参照这位博主:https://blog.csdn.net/Topdandan/article/details/81436141,写的非常的好。

实例:模拟商城多条件查询,搜索框+筛选项

Client client = getClient();
		BoolQueryBuilder boolQueryBuilder =new BoolQueryBuilder();
		TermQueryBuilder name =new TermQueryBuilder("name", "iphone");
		//设置必须满足的名称为iPhone
		boolQueryBuilder.must(name);
		//获取过滤器对象
		List<QueryBuilder> filter = boolQueryBuilder.filter();
		//设置过滤条件
		RangeQueryBuilder price=new RangeQueryBuilder("price").gte(5000).lte(8000); 
		TermQueryBuilder country =new TermQueryBuilder("country", "cn");
		filter.add(price);
		filter.add(country);
		//准备搜索对象,并拿到响应  排序(sort),分页(from,size)和query是同级关系,所以在准备搜索对象时直接设置
		SearchResponse searchResponse = client.prepareSearch("store")
				.setQuery(boolQueryBuilder)
				.addSort("price", SortOrder.DESC)
				.setFrom(0)
				.setSize(2)
				.get();
		SearchHit[] hits = searchResponse.getHits().getHits();
		System.out.println("总条数:"+hits.length);
        //遍历结果集,取出field字段数据
		for (SearchHit searchHit : hits) {
			System.out.println(searchHit.getSource().get("price"));
		}
	}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值