Spring Data访问Elasticsearch----查询方法(1)


上面的方法名将被转换为下面的Elasticsearch json查询



{
“query”: {
“bool” : {
“must” : [
{ “query_string” : { “query” : “?”, “fields” : [ “name” ] } },
{ “query_string” : { “query” : “?”, “fields” : [ “price” ] } }
]
}
}
}


Elasticsearch支持的关键字列表如下所示。  
 *表1:方法名称中支持的关键字*




| 关键字 | 例子 | Elasticsearch查询字符串 |
| --- | --- | --- |
| And | findByNameAndPrice | { “query” : {“bool” : {“must” : [{ “query\_string” : { “query” : “?”, “fields” : [ “name” ] } },{“query\_string” : { “query” : “?”, “fields” : [ “price” ] } }]}}} |
| Or | findByNameOrPrice | {“query”:{“bool”:{“should”:[{“query\_string”:{“query”:“?”,“fields”:[“name”]}},{“query\_string”:{“query”:“?”,“fields”:[“price”]}}]}}} |
| Is | findByName | {“query”:{“bool”:{“must”:[{“query\_string”:{“query”:“?”,“fields”:[“name”]}}]}}} |
| Not | findByNameNot | {“query”:{“bool”:{“must\_not”:[{“query\_string”:{“query”:“?”,“fields”:[“name”]}}]}}} |
| Between | findByPriceBetween | {“query”:{“bool”:{“must”:[{“range”:{“price”:{“from”:“?”,“to”:“?”,“include\_lower”:true,“include\_upper”:true}}}]}}} |
| LessThan | findByPriceLessThan | {“query”:{“bool”:{“must”:[{“range”:{“price”:{“from”:null,“to”:“?”,“include\_lower”:true,“include\_upper”:false}}}]}}} |
| LessThanEqual | findByPriceLessThanEqual | {“query”:{“bool”:{“must”:[{“range”:{“price”:{“from”:null,“to”:“?”,“include\_lower”:true,“include\_upper”:true}}}]}}} |
| GreaterThan | findByPriceGreaterThan | {“query”:{“bool”:{“must”:[{“range”:{“price”:{“from”:“?”,“to”:null,“include\_lower”:false,“include\_upper”:true}}}]}}} |
| GreaterThanEqual | findByPriceGreaterThanEqual | {“query”:{“bool”:{“must”:[{“range”:{“price”:{“from”:“?”,“to”:null,“include\_lower”:true,“include\_upper”:true}}}]}}} |
| Before | findByPriceBefore | {“query”:{“bool”:{“must”:[{“range”:{“price”:{“from”:null,“to”:“?”,“include\_lower”:true,“include\_upper”:true}}}]}}} |
| After | findByPriceAfter | {“query”:{“bool”:{“must”:[{“range”:{“price”:{“from”:“?”,“to”:null,“include\_lower”:true,“include\_upper”:true}}}]}}} |
| Like | findByNameLike | {“query”:{“bool”:{“must”:[{“query\_string”:{“query”:“?\*”,“fields”:[“name”]},“analyze\_wildcard”:true}]}}} |
| StartingWith | findByNameStartingWith | {“query”:{“bool”:{“must”:[{“query\_string”:{“query”:“?\*”,“fields”:[“name”]},“analyze\_wildcard”:true}]}}} |
| EndingWith | findByNameEndingWith | {“query”:{“bool”:{“must”:[{“query\_string”:{“query”:“\*?”,“fields”:[“name”]},“analyze\_wildcard”:true}]}}} |
| Contains/Containing | findByNameContaining | {“query”:{“bool”:{“must”:[{“query\_string”:{“query”:“*?*”,“fields”:[“name”]},“analyze\_wildcard”:true}]}}} |
| In (when annotated as FieldType.Keyword) | findByNameIn(Collection<String> names) | {“query”:{“bool”:{“must”:[{“bool”:{“must”:[{“terms”:{“name”:[“?”,“?”]}}]}}]}}} |
| In | findByNameIn(Collection<String> names) | { “query”: {“bool”: {“must”: [{“query\_string”:{“query”: “”?" “?”", “fields”: [“name”]}}]}}} |
| NotIn (when annotated as FieldType.Keyword) | findByNameNotIn(Collection<String> names) | {“query”:{“bool”:{“must”:[{“bool”:{“must\_not”:[{“terms”:{“name”:[“?”,“?”]}}]}}]}}} |
| NotIn | findByNameNotIn(Collectionnames) | {“query”: {“bool”: {“must”: [{“query\_string”: {“query”: “NOT(”?" “?”)", “fields”: [“name”]}}]}}} |
| True | findByAvailableTrue | {“query”:{“bool”:{“must”:[{“query\_string”:{“query”:“true”,“fields”:[“available”]}}]}}} |
| False | findByAvailableFalse | {“query”:{“bool”:{“must”:[{“query\_string”:{“query”:“false”,“fields”:[“available”]}}]}}} |
| OrderBy | findByAvailableTrueOrderByNameDesc | {“query”:{“bool”:{“must”:[{“query\_string”:{“query”:“true”,“fields”:[“available”]}}]}},“sort”:[{“name”:{“order”:“desc”}}]} |
| Exists | findByNameExists | {“query”:{“bool”:{“must”:[{“exists”:{“field”:“name”}}]}}} |
| IsNull | findByNameIsNull | {“query”:{“bool”:{“must\_not”:[{“exists”:{“field”:“name”}}]}}} |
| IsNotNull | findByNameIsNotNull | {“query”:{“bool”:{“must”:[{“exists”:{“field”:“name”}}]}}} |
| IsEmpty | findByNameIsEmpty | {“query”:{“bool”:{“must”:[{“bool”:{“must”:[{“exists”:{“field”:“name”}}],“must\_not”:[{“wildcard”:{“name”:{“wildcard”:“\*”}}}]}}]}}} |
| IsNotEmpty | findByNameIsNotEmpty | {“query”:{“bool”:{“must”:[{“wildcard”:{“name”:{“wildcard”:“\*”}}}]}}} |


不支持使用GeoJson参数构建Geo-shape查询的方法名。如果您需要在存储库中拥有这样的函数,请在自定义存储库实现中使用ElasticsearchOperations和CriteriaQuery。


## 三、方法返回类型


存储库方法可以定义为具有以下返回类型以返回多个元素:


* List<T>
* Stream<T>
* SearchHits<T>
* List<SearchHit<T>>
* Stream<SearchHit<T>>


**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数Linux运维工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

**因此收集整理了一份《2024年Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**
![img](https://img-blog.csdnimg.cn/img_convert/47519f5f1f42657a3eef3e4a97818f39.png)
![img](https://img-blog.csdnimg.cn/img_convert/0fee4807f88ed3d974f0323b08105d44.png)
![img](https://img-blog.csdnimg.cn/img_convert/ec669c3fba131d4b84abbecd995b64e5.png)
![img](https://img-blog.csdnimg.cn/img_convert/9e597b785713c2c103672f79487f2ed4.png)
![img](https://img-blog.csdnimg.cn/img_convert/de72832db9fe789bacd4ab66c7de20d8.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Linux运维知识点,真正体系化!**

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

**如果你觉得这些内容对你有帮助,可以添加VX:vip1024b (备注Linux运维获取)**
![img](https://img-blog.csdnimg.cn/img_convert/a3c2ee39b277590ee57d3f068b3dd745.jpeg)

*如果你觉得这些内容对你有帮助,可以添加VX:vip1024b (备注Linux运维获取)**
[外链图片转存中...(img-7GQzTK59-1712547336542)]

spring-boot-starter-data-elasticsearch8是一个用于在Spring Boot应用中集成Elasticsearch的starter包。它提供了一组简化的API和配置,使得在应用中使用Elasticsearch进行数据存储和检索变得更加方便。 在该starter包中,模糊查询可以通过使用Elasticsearch的QueryBuilders来实现。QueryBuilders是Elasticsearch提供的一个构建查询的工具类,可以用于构建各种类型的查询条件。 要实现模糊查询,可以使用QueryBuilders提供的模糊查询方法之一,比如fuzzyQuery()。该方法可以根据指定的字段和模糊度来进行模糊查询。以下是一个示例代码: ```java import org.elasticsearch.index.query.QueryBuilders; import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate; import org.springframework.data.elasticsearch.core.query.NativeSearchQuery; import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; // 创建NativeSearchQueryBuilder对象 NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder(); // 添加模糊查询条件 queryBuilder.withQuery(QueryBuilders.fuzzyQuery("fieldName", "keyword")); // 创建NativeSearchQuery对象 NativeSearchQuery searchQuery = queryBuilder.build(); // 执行查询 List<YourEntity> results = elasticsearchRestTemplate.queryForList(searchQuery, YourEntity.class); ``` 在上述代码中,我们使用了NativeSearchQueryBuilder来构建查询条件,然后使用ElasticsearchRestTemplate执行查询。其中,"fieldName"是要进行模糊查询的字段名,"keyword"是要查询的关键词。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值