【问题标题】:elastic search preference setting Custom Value(Java api)弹性搜索首选项设置自定义值(Java api)
【发布时间】:2020-04-24 07:11:08
【问题描述】:

我真的需要一些关于在 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 中友好)

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

假设我不知道我会收到哪个查询文本,但我想将它们平均分配到每个节点(在 5 个中!)

但想坚持第一选择。

如果我看到第一个查询文本 == "red" 并且我指定这个 queryRequest 使用 Node1,那么稍后如果我再次看到查询文本 == "red" 我也想使用 Node1.. 有人知道吗?

谢谢你们!

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

【问题讨论】:

    标签: elasticsearch sharding


    【解决方案1】:

    其实这不是一个愚蠢的问题,答案分为两部分。

    您提到节点,并且您想控制哪个节点根据属性获取哪些查询。

    一些上下文:

    • 弹性搜索集群具有弹性搜索节点
    • 您的文档将“保存”在 elasticsearch 索引中,您执行的查询将针对该索引
    • elasticsearch 索引只是一个抽象层,它隐藏了分片的复杂性(基本上是 lucene 索引)。

    现在,当您保存文档时,该文档最终将存储在分片中(有段等,但没有理由再进一步)。现在您可以拥有主分片和副本分片。当您保存某些内容时,它将转到主分片,并通过 elasticsearch 复制到副本分片(如果有)。您的搜索可以并且将由主分片和副本分片提供服务。

    现在,您想控制哪个节点得到什么。您可以控制的是哪个分片通过routing on saverouting on search 获得什么。

    您已要求控制哪个节点获取什么。大多数时候你不需要这个。你可以控制的是什么分片得到什么,所以你需要控制哪个节点得到什么分片。这可以通过shard allocation awareness 完成。

    这两个主题都是高级功能,您需要确保在尝试使用它们时知道自己在做什么,否则您会得到非常意想不到的结果。

    【讨论】:

      猜你喜欢
      • 2016-03-15
      • 2014-03-10
      • 2022-01-01
      • 2017-01-06
      • 2011-10-18
      • 2020-09-09
      • 2017-08-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多