如何对具有条件的实体进行默认 ElasticSearch 操作(字段 LIKE not EQUAL)
How to make default ElasticSearch operation on entity with conditon( field LIKE not EQUAL )
我是 ElasticSearch 功能的新手,我有一个名为 project
的生成实体
此项目实体有(名称、描述、预算和其他更多字段)
默认情况下,启用 ElasticSearch jhipster 创建一个搜索框字段,看起来它会执行此 sql 请求
SELECT * from Project WHERE name="fieldValue" OR description ="fieldValue" OR ....
下面是我的 ProjectServiceImpl
中的 search 方法
@Transactional(readOnly = true)
public Page<ProjectDTO> search(String query, Pageable pageable) {
return projectSearchRepository.search(queryStringQuery(query), pageable)
.map(projectMapper::toDto);
}
但我想列出具有(条件 WHERE name LIKE fieldValue OR description LIKE fieldValue ...)
老实说,我是 ElasticSearch 的新手,我不知道如何使用 QueryStringQueryBuilder,我用谷歌搜索了很多,但我没有找到具体的例子感谢您的帮助。
我创建了一个解决方法,只是我已经使用 QueryBuilder 并在两个星号之间传递查询参数 *
public Page<ProjectDTO> search(String query, Pageable pageable) {
QueryBuilder queryBuilder = QueryBuilders.boolQuery()
.should(QueryBuilders.queryStringQuery("*"+query+"*")
.lenient(true)
.field("name")
.field("description"));
return projectSearchRepository.search(queryBuilder, pageable)
.map(projectMapper::toDto);
}
我是 ElasticSearch 功能的新手,我有一个名为 project
的生成实体
此项目实体有(名称、描述、预算和其他更多字段)
默认情况下,启用 ElasticSearch jhipster 创建一个搜索框字段,看起来它会执行此 sql 请求
SELECT * from Project WHERE name="fieldValue" OR description ="fieldValue" OR ....
下面是我的 ProjectServiceImpl
中的 search 方法@Transactional(readOnly = true)
public Page<ProjectDTO> search(String query, Pageable pageable) {
return projectSearchRepository.search(queryStringQuery(query), pageable)
.map(projectMapper::toDto);
}
但我想列出具有(条件 WHERE name LIKE fieldValue OR description LIKE fieldValue ...)
老实说,我是 ElasticSearch 的新手,我不知道如何使用 QueryStringQueryBuilder,我用谷歌搜索了很多,但我没有找到具体的例子感谢您的帮助。
我创建了一个解决方法,只是我已经使用 QueryBuilder 并在两个星号之间传递查询参数 *
public Page<ProjectDTO> search(String query, Pageable pageable) {
QueryBuilder queryBuilder = QueryBuilders.boolQuery()
.should(QueryBuilders.queryStringQuery("*"+query+"*")
.lenient(true)
.field("name")
.field("description"));
return projectSearchRepository.search(queryBuilder, pageable)
.map(projectMapper::toDto);
}