gpt4 book ai didi

elasticsearch - Elasticsearch 首选项设置自定义值(Java api)

转载 作者:行者123 更新时间:2023-12-03 02:24:41 24 4
gpt4 key购买 nike

我真的真的需要一些关于Java API中 Elasticsearch 用法的帮助...

假设我正在使用ES中的Java api。
到目前为止,我知道由于主要和副本的不一致问题, Elasticsearch 可能会给出不一致的结果(删除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)
有没有一种聪明的方法来指定在给定的查询文本中使用第一个Node(或某些Node Id ??)(而不是使用hashmap东西...)
例如,

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

但是要坚持第一选择。

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

感谢你们!

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

最佳答案

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

您提到了节点,并且想要控制哪个节点基于属性来获取哪些查询。

一些背景:

  • Elasticsearch集群具有elasticsearch节点
  • 您的文档将“保存”在Elasticsearch索引中,并且您执行的查询将针对该索引
  • Elasticsearch 索引不过是一种抽象,它隐藏了碎片的复杂性(基本上是lucene索引)。

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

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

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

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

    关于elasticsearch - Elasticsearch 首选项设置自定义值(Java api),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61377182/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com