当前位置: 首页 > 知识库问答 >
问题:

将Spring Boot与Elastic搜索集成的最佳方式

邹野
2023-03-14

我是弹性搜索新手。我们正在构建一个带有弹性搜索的Spring boot应用程序。

目前,我们必须使用Spring Boot 2.1.3. RELEASE,但我们可以使用最新的稳定Elastic搜索版本。

做了一些R

1. elasticsearch-rest-high-level-client
2. spring-boot-starter-data-elasticsearch

可能还有其他方法可以将Spring boot与弹性搜索集成在一起。

有谁能帮助我们找出将Spring boot与Elastic search集成的最佳方法吗?

根据以上提供的Spring boot版本,我应该使用哪个版本的Elastic search?

共有1个答案

查学文
2023-03-14

来到Elasticsearch版本,请访问以下网站:
https://docs.spring.io/spring-data/elasticsearch/docs/current/reference/html/#preface.versions

对于将Elasticsearch与SpringBoot结合使用,我们包括三个依赖项:

        <dependency>
            <groupId>org.elasticsearch</groupId>
            <artifactId>elasticsearch</artifactId>
            <version>6.2.2</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.elasticsearch.client/elasticsearch-rest-high-level-client -->
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-high-level-client</artifactId>
            <version>6.2.2</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-elasticsearch</artifactId>
            <version>3.2.0.RELEASE</version>
        </dependency>

正如您所看到的,我的Elasticsearch版本是6.2.2(与服务器端版本相匹配),Spring版本是2.1.13。释放。

基本上使用了2个客户端。我建议您使用Rest High Level Client。另一个是传输客户端。

下面介绍了如何将Rest高级客户端集成到应用程序

@Configuration
public class ElasticClientService extends AbstractElasticsearchConfiguration {

  @Override
  @Bean
  public RestHighLevelClient elasticsearchClient() {
    final ClientConfiguration clientConfiguration = ClientConfiguration.builder()
        .connectedTo("localhost:9200").build();
    return RestClients.create(clientConfiguration).rest();
  }
}

一旦创建了客户端,剩下的就是执行CRUD操作。

  @Autowired
  ElasticClientService client;

  public void save(Object object, String id, String type, String indexName) throws IOException {
    ObjectMapper objectMapper = new ObjectMapper();
    Map<String, Object> objectMap = objectMapper.convertValue(object, Map.class);
    IndexRequest indexRequest = new IndexRequest(indexName, type, id);
    indexRequest.source(objectMap);
    IndexResponse response = client.elasticsearchClient().index(indexRequest);
  }

  public void deleteById(String id, String type, String indexName) throws IOException {
    DeleteRequest request = new DeleteRequest(indexName, type, id);
    DeleteResponse deleteResponse = client.elasticsearchClient().delete(request);
  }

以上两个操作在弹性索引中创建一个文档(行),并根据ID从弹性索引中删除一个文档(行)。

有关更多参考,请参阅:https://www.elastic.co/guide/en/elasticsearch/client/java-rest/6.2/java-rest-high-document-delete.html*
*根据您的需要更改版本

您可以参考此以获得进一步的帮助

 类似资料:
  • 问题内容: 我正在将我的ASP.NET Core应用程序升级到V3,并使用Visual Studio 2019进行开发/调试。除此之外,整个过程很顺利: UseWebpackDevMiddleware不再是:https : //github.com/aspnet/AspNetCore/issues/12890。 我现在希望了解每次调试时VS运行webpack的最佳方法,最好是仅在已更改的JS代码上

  • 我试着遵循这里列出的Nutch+ES指南 https://gist.github.com/xrstf/b48a970098a8e76943b9 https://qbox.io/blog/scring-the-web-wit-nutch-for-elasticsearch 然而,我无法让他们的组合工作。基本上,我在Nutch上执行了以下命令: 现在,我想将获取的数据索引到ES中,我按照指南进行了操作

  • 问题内容: 是否可以集成Python和JavaScript?例如,假设您希望能够在JavaScript中定义类并从Python使用它们(反之亦然)。如果是这样,最好的方法是什么?我不仅对这是否可行而且对是否 有人在“严肃的”项目或产品中做到了 感兴趣。 我想举个例子,可以使用Jython和Rhino,但我很好奇是否有人真正做到了这一点,以及是否有针对其他平台的解决方案(尤其是CPython)。 问

  • 问题内容: 集成erlang和python的最佳方法是什么? 我们需要在erlang中调用python函数,并在python中调用erlang函数。目前,我们正在尝试将SOAP用作这两种语言之间的中间层,但是我们有很多“不兼容”的麻烦。您能否建议执行集成的最佳方法? 问题答案: 如erlport所述,您可以在Erlang端使用Erlang端口协议和term_to_binary / binary_t

  • 我有一个二进制搜索树,它的每个节点都有两个值。 所以它的节点是这样的。 我已经根据节点的“name”变量的升序在BST中插入了值。所以树的顺序遍历将按“name”的升序返回节点。 现在我想根据“值”变量的升序显示树节点。无需更改原始树。哪种算法/方法对此最有效?

  • 本文向大家介绍详解Elastic Search搜索引擎在SpringBoot中的实践,包括了详解Elastic Search搜索引擎在SpringBoot中的实践的使用技巧和注意事项,需要的朋友参考一下 实验环境 ES版本:5.3.0 spring bt版本:1.5.9 首先当然需要安装好elastic search环境,最好再安装上可视化插件 elasticsearch-head来便于我们直观地