弹性搜索首选项设置自定义值(Java api)

问题描述 投票:0回答:1

我真的真的需要一些关于Java API中弹性搜索用法的帮助...

假设我正在使用ES中的Java api。到目前为止,我知道由于主要和副本的不一致问题,弹性搜索可能会给出不一致的结果(删除doc会由于删除标记而不是删除标记而使统计信息总体上有所不同)。

所以我尝试了什么

searchRequest.preference(“ _ primary_first”)。这给了我一致的结果(因为它只使用主分片!)

现在我想在玩具示例中尝试的是

1)使用首选项=自定义(字符串)值https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-body.html#request-body-search-preference

2)如果我有5个节点,我想基于queryText指定我们要使用的节点。

例如,

'''
if (queryRequest.text().equals("red")) {
   // use 1st node
   searchRequest.preference("??????")
} else if (queryRequest.text().equals("blue")) {
   // use 2nd node
   searchRequest.preference("??????")
} else {
   // use either 3rd~5th node <- but this is not necessary if it is really hard..
   searchRequest.prefernce("???????")
}

'''

Q1)我想我需要使用自定义设置“ WISELY”来表示要使用哪个节点...有人可以给我简单的java.api示例吗?

Q2)这是另一种,但是有什么办法可以从searchResponse加载每个节点的状态?(再次在Java api friendly中)

Q3)是否有任何聪明的方法来指定对给定的查询文本使用第一个节点(或某些节点ID?)(而不是使用哈希映射的东西...)例如,>

让我说我不知道​​我将收到哪个查询文本,但我想将它们平均分配给每个节点(5个!)

但是要坚持第一选择。

如果我看到第一个查询文本==“ red”并且我指定此queryRequest使用Node1,那么以后如果我再次看到查询文本==“ red”,我也想使用Node1。有人有想法吗?

谢谢你们!

免责声明:我不是CS专家,还是独立学习者,他尝试尝试新事物来打破我的舒适区! :)请原谅这个愚蠢的问题!

我真的真的需要一些关于Java api中的弹性搜索用法的帮助...假设我正在使用ES中的Java api。到目前为止,我了解到弹性搜索会由于主要...

elasticsearch sharding
1个回答
0
投票

实际上这不是一个愚蠢的问题,答案有两个部分。

© www.soinside.com 2019 - 2024. All rights reserved.