Spring数据弹性搜索 - 查询 - 全文搜索

use*_*872 5 elasticsearch spring-data spring-data-elasticsearch

我正在尝试使用弹性搜索进行全文搜索,使用Spring数据将弹性搜索与我的应用程序集成.

例如,

有6个字段需要编制索引.

1)firstName 2)lastName 3)标题4)位置5)行业6)电子邮件

HTTP://本地主机:9200 /测试/ _mapping /

我可以在映射中看到这些字段.

现在,我想通过搜索输入搜索这些字段.

例如,当我搜索"mike 123"时,它必须搜索所有这6个字段.

在Spring数据仓库中,

以下方法仅用于搜索firstName.

Collection<Object> findByFirstNameLike(String searchInput)
Run Code Online (Sandbox Code Playgroud)

但是,我想搜索所有领域.

我试过了,

Collection<Object> findByFirstNameLikeOrLastNameLikeOrTitleLikeOrLocationLikeOrIndustryLikeOrEmailLike(String searchInput,String searchInput1,String searchInput2,String searchInput3,)
Run Code Online (Sandbox Code Playgroud)

这里,即使输入字符串相同,我需要传递与6个参数相同的输入.此方法名称看起来更大,包含多个字段.

无论如何使用@Query或....

喜欢,

Collection<Object> findByInput(String inputString)
Run Code Online (Sandbox Code Playgroud)

此外,应该为其中一个领域提供加强.

例如,

当我搜索"mike mat"时,如果firstName中有任何匹配,那么即使在其他字段中存在完全匹配,该结果也应该是结果中的第一个匹配.

谢谢

Rob*_*rto 6

让我们假设你的搜索词是变量query,你可以使用的方法searchElasticsearchRepository.

repo.search(queryStringQuery(query))

使用queryStringQuery使用以下导入

import static org.elasticsearch.index.query.QueryBuilders.queryStringQuery;


use*_*872 5

我找到了实现这一目标的方法并在此处发布。希望,这会有所帮助。

QueryBuilder queryBuilder = boolQuery().should(
                    queryString("Mike Mat").analyzeWildcard(true)
                            .field("firstName", 2.0f).field("lastName").field("title")
                            .field("location").field("industry").field("email"));
Run Code Online (Sandbox Code Playgroud)

谢谢