【问题标题】:do we need to close elasticsearch node after the every search request我们是否需要在每个搜索请求后关闭弹性搜索节点
【发布时间】:2016-01-28 23:46:07
【问题描述】:

我想知道:每次完成查询/搜索过程后,我们是否必须致电node.close(),还是只需client.close() 就可以了?这是我的代码:

val node =nodeBuilder().client(true).node()
val client =node.client()
val query = QueryBuilders.matchQuery(fieldName.toString(), q).fuzziness(Fuzziness.AUTO)//user can make 2 typo mistakes

val response = client.prepareSearch("arteciatedb")
      .setTypes("readOnlyAdmin")
      .setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
      .addFields("uuid","FirstName","LastName","Email","SecondryEmail","UserStatus","_source")
      .setQuery(query)
      .execute()
      .actionGet()


 val hits = response.getHits

 totalHits=hits.getTotalHits
log.info("total search result {}",)   
client.close()
node.close()

我经常运行这段代码;所以,在node.close() 之后,下次我执行此代码时,它会再次启动节点(导致搜索响应延迟),这是不希望的。我想知道当我们需要频繁调用此搜索代码时,node.close() 是否是正确的做法。

【问题讨论】:

    标签: java scala elasticsearch elasticsearch-java-api


    【解决方案1】:

    简而言之:不,您可以随着时间的推移重复使用同一个客户端而不会遇到麻烦。 close() 应仅在关机时使用。此外,频繁启动和停止一个或多个节点客户端会在整个集群中产生不必要的噪音。

    请注意,使用nodeBuilder().client(true).node(),您正在创建一个节点,该节点将加入 ES 集群。如果你只想要一个客户端而不是一个节点,你应该使用TransportClient (https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/transport-client.html)。

    【讨论】:

    • 我们也不需要关闭客户端吗?
    • 是的,和节点客户端一样
    猜你喜欢
    • 1970-01-01
    • 2020-11-20
    • 1970-01-01
    • 2013-06-16
    • 2020-03-24
    • 2012-11-29
    • 1970-01-01
    • 1970-01-01
    • 2015-05-26
    相关资源
    最近更新 更多