简体   繁体   English

如何使用ElasticsearchRepository通过Java搜索弹性搜索?

[英]How to search elastic search via Java using ElasticsearchRepository?

I'm creating a Java application using Elastic Search. 我正在使用Elastic Search创建Java应用程序。 Here is the link for my project. 这是我的项目的链接。 https://github.com/chanakaDe/ensembl-elastic-rest https://github.com/chanakaDe/ensembl-elastic-rest

In this project, I have implemented a rest controller to take data as JSON. 在这个项目中,我实现了一个rest控制器来将数据作为JSON。 This is the controller class. 这是控制器类。 Now it only has 2 methods. 现在只有2种方法。 But I need to add some method like this. 但是我需要添加一些这样的方法。

@RequestMapping(value = "/find-by/{id}/{param1}/{param2}/{param3}", method = RequestMethod.GET)
public Iterable<Track> findAllWithParams(@PathVariable int id, @PathVariable String param1, @PathVariable String param2, @PathVariable String param3) {
    return trackService.someMethodWithParams(id, param1, param2, param3);
}

What I need to do is take some values from user and send them into Elastic server and make a search. 我需要做的是从用户那里获取一些值,并将它们发送到Elastic server中并进行搜索。 I just refered some of these links and got some idea. 我只是参考了这些链接中的一些,并且有了一些想法。 https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/java-search.html https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-terms-query.html https://www.elastic.co/guide/zh-CN/elasticsearch/client/java-api/current/java-search.html https://www.elastic.co/guide/zh-CN/elasticsearch/reference/current/query -dSL-方面,query.html

TrackService.java and TrackServiceImpl.java are implemented by TrackRepository.java and it's extended by ElasticsearchRepository default class. TrackService.java和TrackServiceImpl.java由TrackRepository.java实现,并由ElasticsearchRepository默认类扩展。 https://github.com/chanakaDe/ensembl-elastic-rest/blob/master/src/main/java/com/chanaka/book/repository/TrackRepository.java https://github.com/chanakaDe/ensembl-elastic-rest/blob/master/src/main/java/com/chanaka/book/repository/TrackRepository.java

I need to take values via REST URL and create an object like following and pass that to Elastic Server. 我需要通过REST URL取值并创建一个如下对象,并将其传递给Elastic Server。 How can I implement that with my current project configuration ? 如何在当前项目配置中实现该功能?

{
"query": {
    "constant_score" : {
        "filter" : {
            "terms" : { "user" : ["kimchy", "elasticsearch"]}
        }
    }
}

} }

This is my TrackService.java interface. 这是我的TrackService.java接口。

public interface TrackService {

Track save(Track track);

Track findOne(int id);

Iterable<Track> findAll();

} }

And also this is my TrackServiceImpl.java class implemented by TrackService.java. 这也是我通过TrackService.java实现的TrackServiceImpl.java类。

public class TrackServiceImpl implements TrackService {

private TrackRepository trackRepository;

@Autowired
public void setTrackRepository(TrackRepository trackRepository) {this.trackRepository = trackRepository;}

@Override
public Track save(Track track) {
    return trackRepository.save(track);
}

@Override
public Track findOne(int id) {
    return trackRepository.findOne(id + "");
}

@Override
public Iterable<Track> findAll() {
    return trackRepository.findAll();
}

} }

Do I need to implement a custom method for that ? 我是否需要为此实现自定义方法? Or is there any default methods like findAll() and findOne() ? 还是有诸如findAll()和findOne()之类的默认方法? Simply pass an object and get the value ? 只需传递一个对象并获得价值?

I think, there's no such existing method and you need to create your own by using QueryBuilders.wrapperQuery(query.toString()) and ElasticsearchTemplate . 我认为,没有这样的现有方法,您需要使用QueryBuilders.wrapperQuery(query.toString())ElasticsearchTemplate创建自己的方法。 Just to note, wrapperQuery supports only query not filter. 请注意, wrapperQuery仅支持查询而不过滤。 But you can achieve filter context query with constant_score . 但是您可以使用constant_score实现过滤器上下文查询。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何使用 ElasticsearchRepository 中的 NativeSearchQueryBuilder 按嵌套字段 id 进行搜索? - How to search by nested field id using NativeSearchQueryBuilder in ElasticsearchRepository? 如何使用通配符弹性搜索 java 搜索不区分大小写 - How to search case insensitive using wildcard elastic search java 如何使用弹性搜索RestHighLevelClient在java中编写json映射? - How to write json mapping in java using elastic search RestHighLevelClient? 如何使用Java客户端更新Elastic Search上的条目 - How to update an entry on Elastic Search using Java client 如何使用 Java 将我们的 CSV 文件索引到 Elastic Search 中? - How to Index our CSV file into Elastic Search using Java? 如何在java中使用lambda表达式编写弹性搜索代码 - How to write elastic search code using lambda expression in java 如何使用Java应用程序请求弹性搜索URL? - How to make request for a Elastic search url using java application? 如何使用 Elastic 搜索和 Java 实现预先输入性别的自动建议 - How to implement autosuggestions with gender typeahead using Elastic search and Java 如何使用查询生成器翻译 Java 中的 Elastic Search 查询? - How to translate Elastic Search query in Java by using the query builder? 在弹性搜索 Java 中搜索 substring - Search for substring in Elastic Search Java
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM