ES全文检索详细教程

本文详细介绍了如何使用 Elasticsearch 进行全文检索,包括等值查询、前缀查询、通配符查询、范围查询以及复合查询。同时,文章也探讨了Java API在实现这些查询时的方法,并介绍了过滤查询和聚合查询的应用,如最大值、最小值、去重和分组聚合等统计分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        

ES全文检索

ES查询一共分两种 :  语句查询    聚合查询

语句查询中包含:词条查询  匹配查询  复合查询

聚合查询中包含:统计   分组

ES javaAPI的相关体系  

 词条查询

所谓词条查询,也就是ES不会对查询条件进行分词处理,只有当词条和查询字符串完全匹配时,才会被查询到。

等值查询-term

等值查询,即筛选出一个字段等于特定值的所有记录。

SQL:

select * from person where name = '张无忌';

而使用ES查询语句却很不一样(注意查询字段带上keyword):

GET /person/_search

{

"query": {

"term": {

"name.keyword": {

"value": "张无忌",

"boost": 1.0}}}}

ElasticSearch 5.0以后,string类型有重大变更,移除了string类型,string字段被拆分成两种新的数据类型: text用于全文搜索的,而keyword用于关键词搜索。

多值查询-terms

多条件查询类似Mysql里的IN查询,例如:

Sql

select * from persons where sect in('明教','武当派');

ES查询语句:

GET /person/_search

{

"query": {

"terms": {

"sect.keyword": [

"明教",

"武当派"

],

"boost": 1.0}}}

Java实现:

SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();

// 构建查询语句

searchSourceBuilder.query(QueryBuilders.termsQuery("sect.keyword", Arrays.asList("明教", "武当派")));

}

范围查询-range

Sql

Select * from pesons where  age between 18 and 22;

ES查询语句

GET /person/_search

{

"query": {

"range": {

"age": {

"from": 10,

"to": 20,

"include_lower": true,

"include_upper": true,

"boost": 1.0}}}}

Java构建查询条件:

SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();

// 构建查询语句

searchSourceBuilder.query(QueryBuilders.rangeQuery("age").gte(10).lte(30));

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值