V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
BeautifulSoap
V2EX  ›  分享发现

拿 GPT 学 ElasticSearch 实在太鸡儿坑了

  •  
  •   BeautifulSoap · 2023-06-07 15:25:27 +08:00 · 4003 次点击
    这是一个创建于 567 天前的主题,其中的信息可能已经有所发展或是发生改变。

    可能算月经贴了,但是还是分享下自己刚刚被坑的经历

    最近在学 ElasticSearch ,官方 Guide 文档找半天根本找不到面向新手介绍什么是 index ,shard ,primary shard, replica shard 这种概念的地方。于是试试看问 ChatGPT 和 new bing ,一路问下来我感觉如果你是要学一个完全不懂的东西最好别找 GPT ,说的知识前后矛盾,你指出来他就改,然后继续前后矛盾,如果你脑子转得不够灵活发现不了矛盾,你甚至怎么被坑得都不知道。搞得我都开始觉得它就是故意想坑我,聊着聊着火气就要上来了 orz 到最后我都分不清这两种前后矛盾的知识哪个是正确的了,越学越凌乱。

    首先是 ChatGPT 的对话,现在已经可以分享对话了,大家可以看看我和 ChatGPT 的对话

    https://chat.openai.com/share/c8ef6660-9649-4e79-9a03-e0dcb81bde2b

    然后更绝的是同样的问题问 new bing

    问:elasticsearch 指定主分片大于 1 的时候,每个主分片都保存有完整索引数据,还是每个主分片分别保存一部分数据

    答: 当你指定主分片大于 1 时,每个主分片都保存有完整索引数据 1 。每个主分片都是一个完整的 Lucene 索引,它们之间没有任何关系。这意味着,如果你有 3 个主分片,那么你将有 3 个完整的 Lucene 索引。每个副本分片也是一个完整的 Lucene 索引,但它们只是主分片的副本

    和上面链接里 ChatGPT 的回答安全矛盾。再见了您。所以,有人能回答下我问的这几个问题吗?

    37 条回复    2023-08-30 23:10:02 +08:00
    Leviathann
        1
    Leviathann  
       2023-06-07 15:32:53 +08:00
    问 es 聚合排序相关的问题也坑,完全没法用
    openliucongbx
        2
    openliucongbx  
       2023-06-07 15:35:05 +08:00
    我不是很懂 ElasticSearch


    不知道 GPT4 的回答能不能满足你的问题

    Elasticsearch 的 `index` 和 `shard` 之间存在紧密的关系。在讨论它们之间的关系之前,我们先了解一下这两个概念。

    **Index (索引)**:Elasticsearch 中的索引是具有相似特征的文档集合。它类似于关系型数据库中的表。索引是用于存储和搜索数据的主要结构,可以在一个 Elasticsearch 集群中创建多个索引。

    **Shard (分片)**:由于单个索引可能会变得非常大,不可能在一台服务器或节点上存储所有数据。为了解决这个问题,Elasticsearch 提供了分片功能。一个索引可以被分成多个更小的部分,称为分片。每个分片都可以独立地存储、搜索和处理数据。这使得 Elasticsearch 可以在多个服务器或节点上分布式处理和存储大量数据。

    关于你的问题:

    1. **shard 保存有 index 的所有数据吗?**:一个 index 的数据被分布在它的所有分片( shards )中。每个分片负责存储索引的一部分数据,所以单个分片并不包含整个索引的所有数据。将数据分布在多个分片中可实现水平扩展,提高查询性能。

    2. **primary shard 和 replica shard 保存有 index 的所有数据吗?**:在 Elasticsearch 中,分片又分为两类:primary shard (主分片)和 replica shard (副本分片)。

    - **Primary shard (主分片)**:每个索引都有一个或多个主分片,它们负责存储索引的数据。主分片的数量在创建索引时就确定了,之后不能更改。

    - **Replica shard (副本分片)**:副本分片是主分片的拷贝,用于提高数据冗余和查询性能。副本分片的数量可以在创建索引后动态更改。

    主分片和副本分片都包含索引的部分数据。主分片和它对应的副本分片包含相同的数据。这样做的目的是为了确保在主分片所在的节点发生故障时,数据不会丢失,同时还能提高查询性能,因为查询可以在主分片和副本分片上同时进行。
    lambdaq
        3
    lambdaq  
       2023-06-07 15:37:06 +08:00   ❤️ 3
    es 的有些问题,还真轮不到怪罪 chatgpt 。因为 es 它丫的每个版本都有重大区别。。。。。
    awesomes
        4
    awesomes  
       2023-06-07 15:37:36 +08:00
    老老实实看官方文档和 stackoverflow 吧,问 GPT 就是你的不对了,听他一本正经的胡说八道只会把你带坑里
    Yukiteru
        5
    Yukiteru  
       2023-06-07 15:38:53 +08:00   ❤️ 1
    这种问题建议用英文问,得到的回答精确度会高很多
    potatowish
        6
    potatowish  
       2023-06-07 15:46:26 +08:00 via iPhone   ❤️ 1
    用英文提问
    7gugu
        7
    7gugu  
       2023-06-07 15:47:10 +08:00   ❤️ 1
    chatGPT 现在只能做到把一句话写的很像人,但还做不到保证一句话是正确的
    BeautifulSoap
        8
    BeautifulSoap  
    OP
       2023-06-07 15:59:06 +08:00
    @7gugu
    @potatowish
    GPT 的很多回答都是直接从英文里翻译过来的,所以其实语言问题不大。比如我用英文又问了上面中文里互相矛盾的问题,结果英文下它依旧互相矛盾
    https://chat.openai.com/share/f157ab9c-4784-440a-b338-062182b71dad
    ql562482472
        9
    ql562482472  
       2023-06-07 16:28:23 +08:00
    你要这样问他最起码得上 GPT4 ,在真实性上有巨大提升,然后就是我前几天也找 ES 的一些东西,我发现 search with bing 无法读取 es 官方文档的任何页面 不知道为啥 所以 gpt 问 es 知识恐怕有点难,不过可以试试 bard ,我用 bard 搜的 es 的信息还算准确 来源也是 es 官网文档
    zagfai
        10
    zagfai  
       2023-06-07 16:58:39 +08:00   ❤️ 1
    3.5 和 4 根本不是一个东西
    X21541
        11
    X21541  
       2023-06-07 17:41:12 +08:00
    直接看官方文档不行吗,反正可以翻译成中文。
    registerrr
        12
    registerrr  
       2023-06-07 17:52:20 +08:00
    我感觉 new bing 最近变傻了.
    不光是理解能力, 搜索能力也变差了.
    sumu
        13
    sumu  
       2023-06-07 17:58:06 +08:00
    默认版本的 chatGPT 不适合的,非要使用,可以用 es 的文档 embedding ,可以参考 openai-cookbook ,里面有具体的指引
    BeautifulSoap
        14
    BeautifulSoap  
    OP
       2023-06-07 17:59:04 +08:00
    @X21541 我已经说了啊

    > 官方 Guide 文档找半天根本找不到面向新手介绍什么是 index ,shard ,primary shard, replica shard 这种概念的地方
    BeautifulSoap
        15
    BeautifulSoap  
    OP
       2023-06-07 17:59:37 +08:00   ❤️ 1
    @registerrr 不是错觉,现在 new bing 感觉完全成了一个智障了
    Morriaty
        16
    Morriaty  
       2023-06-07 18:55:27 +08:00
    es 官方文档是我认为开源软件里做的世上第二好的文档了,怎么会不清晰呢🤣

    比如你说的新手介绍 index,shard 这些: https://www.elastic.co/guide/cn/elasticsearch/guide/current/distributed-cluster.html
    BeautifulSoap
        17
    BeautifulSoap  
    OP
       2023-06-07 19:06:59 +08:00 via Android
    @Morriaty 文档里都说了,“本书基于 Elasticsearch 2.x 版本,有些内容可能已经过时”,目前 es 都 8.8 了,官方也不推荐。所以我直接看的最新官方英文文档,然而并没方便找到相关内容

    https://www.elastic.co/guide/en/elasticsearch/reference/8.8/elasticsearch-intro.html
    Morriaty
        18
    Morriaty  
       2023-06-07 19:16:21 +08:00
    @BeautifulSoap #17
    1. 最新版本的关于 cluster, nodes, shards, indices 的介绍就是这个 https://www.elastic.co/guide/en/elasticsearch/reference/current/scalability.html ,很简单
    2. es2.x 虽然很老了,但基本数据结构上除了 _doc 以外,基本上没有大的变化。虽然现在都 8.x 了,但我依然很推荐你看看这个 es2.x 的中文文档,几乎把 search / query / filter / aggs 说的清清楚楚
    caryRowen
        19
    caryRowen  
       2023-06-07 19:56:21 +08:00 via Android
    所以上面 GPT4 的回答是真的吗
    locoz
        20
    locoz  
       2023-06-07 20:39:41 +08:00
    一点开你的对话就能发现肉眼可见的严重问题,使用方法完全错误...

    首先你要注意,你用的是 GPT3.5 ,Token 数量上限很低,并且以 3.5 的能力,本来就会很容易出现错误或幻觉问题。
    然后 Elastic 的产品,众所周知改动很大,不同版本存在一些差异和冲突的地方在所难免。

    然后在这个基础上你做了什么?第一条消息没有问题,但从第二条开始就逐渐进入典型的死亡循环了。你在 GPT3.5 本就无法支持过多 Token 数量,且它已经回复了一大段文字的情况下,又问了它第二个延伸的问题,这个时候其实 Token 数量应该就差不多已经不够用了。

    等到了你提出第三、第四个问题的时候,以 GPT3.5 的能力来说,它基本已经无法再注意前面的内容,更别提更后面的第五、六、七、八个问题时的情况了...想要它记得之前说过的话,前后能对得上,这是不现实的。

    ---

    正确做法是什么?使用 GPT4 ,复制官方文档内容,直接丢给 GPT4 让它按照你的问题方向进行解读。同时,在交互内容过多时,适时清空 session ,重新粘贴新的、需要了解的文档内容进行同样的操作。只要你按这个操作逻辑去使用,在内容没有触发到它那个抽风的点的情况下,它回复的内容就都会是正确且符合你要求的。
    BeautifulSoap
        21
    BeautifulSoap  
    OP
       2023-06-07 20:45:43 +08:00
    @Morriaty
    1. 你给的官网文档这一节我在一开始就看了,但是我寻思我问 GPT 的那堆问题在这节文章里也根本得不到解答啊。而且不谈我的疑问了,作为一个初学者来看这文档,它连什么是 index 、shard 都没讲清楚,要不然我也不会去试着问 GPT
    2. 当时我有纠结过纠结过看不看这个 2.x 的指南,但是经常听说 ES 新版本变价都极大(比如 3L 不就有这么说),所以我甚至不知道看完这个文档后到底有什么概念和原理发生了变化,所以决定不看直接看最新的文档。但是看了之后发现这最新文档写得并不适合初学者
    BeautifulSoap
        22
    BeautifulSoap  
    OP
       2023-06-07 21:10:58 +08:00
    @locoz 我有个疑问,GPT 健忘这个是我知道的,但是针对有明确答案的问题,为什么记不记得上下文会成为问题?如果你说我对话次数太多 token 不够用了,那么我 8L 用英文只进行了两次对话,再怎么说 token 数都够了,然而 GPT 仅仅在两轮对话里就出现了前后矛盾,这能用 token 数不够来解释吗?
    至于 GPT4 ,因为我并没有订阅,所以平时都是用公司搭在 Azure 上的 GPT4 ,但是反应比网页慢平时都不太想用。一般都是用 GPT3.5 。刚才问了下公司的,至少在单主分片多主分片问题下,得出了和 bard 相同的答案。今后还是用公司的 GPT4 了。
    至于你说的“复制官方文档内容,直接丢给 GPT4 ”,有个问题,作为新手根本就找不到相关知识点在那个文档里也无从谈起复制官方文档内容。不如说我想的问题找到在文档哪个部分了,我直接读就是了
    locoz
        23
    locoz  
       2023-06-07 22:19:54 +08:00
    @BeautifulSoap #22
    1 、因为它并不知道哪个是“明确答案”啊...网上内容学得那么杂,外加 Elastic 本来就改动多,不记得上下文必然会前后对不上。而且模型也可能学习到仅仅提到 ElasticSearch 和 index 、shard 之类的东西,但整体讲的是另一套软件的内容,这完全有可能的。所以不要觉得模型一定就知道什么是“明确答案”。

    2 、允许提交的 Token 数量上限不一定等同于模型能注意到的 Token 数量上限,目前根据我的使用经验来说,模型在不同内容下的注意力是有差异的,可能跟内容信息量也有关系。像长代码跟长文,即使 Token 数量一样,回答质量也会有差异。而且还是前面说过的,以 3.5 的能力,本来就会很容易出现错误或幻觉问题。

    3 、“作为新手根本就找不到相关知识点在那个文档里也无从谈起复制官方文档内容”这个不是什么问题,你完全可以直接把丰富的操作信息和相关描述直接丢过去,GPT4 的能力能做到根据内容做出综合判断。有时候并不一定需要最直接的描述,通过边角信息综合起来也能得到答案。

    4 、即使你找到了对应的文档,信息往往也会过于冗杂,有时候还会出现你跟作者思维方式不同导致理解不了的情况,所以直接读并不一定就比你复制粘贴丢给 GPT 提问得到想要的答案快。
    sickoo
        24
    sickoo  
       2023-06-07 22:44:20 +08:00
    es 确实难。
    FightPig
        25
    FightPig  
       2023-06-07 22:56:46 +08:00
    这玩意有时就瞎回,我上个月问用 rust 实现 usb 监听, 它给我凭空出一个 crate 出来
    suzic
        26
    suzic  
       2023-06-07 23:05:51 +08:00 via Android
    如果完全不懂的话确实不适合用 ChatGPT 问,容易被带坑里
    fkdtz
        27
    fkdtz  
       2023-06-07 23:07:17 +08:00
    让他做一些代码片段的示例还行,长一点的就很大概率出错,跟楼主说的一样,你如果发现错误并告诉他他会改,但前提是你知道正确的是什么样的,要不然真的会被误导。
    lingalonely
        28
    lingalonely  
       2023-06-07 23:16:14 +08:00
    如果是明确的哪项技术,还是直接看官方文档来的准确
    westoy
        29
    westoy  
       2023-06-07 23:18:47 +08:00
    所以说

    只要技术栈的文档变得勤

    AI 就没办法淘汰你
    X21541
        30
    X21541  
       2023-06-08 16:33:06 +08:00
    @BeautifulSoap #14 说实话,不懂这些概念,一样可以使用 elk 。
    raphaell2e
        31
    raphaell2e  
       2023-06-09 09:45:19 +08:00
    官方文档介绍的很详细的,建议认真研读.chatgpt 适合针对性的解决问题,不适合系统性的学习.因为他会胡说八道.
    LLaMA2
        32
    LLaMA2  
       2023-06-09 15:49:22 +08:00
    最近要搞个内部用的知识问答,决定看看 elasticsearch
    目前看的文档是 https://www.elastic.co/guide/en/elasticsearch/reference/8.7/api-conventions.html

    整体上有认识 document,type,index ,类似与传统数据库中的一条数据,一张表,一个库

    而 shard,replica 是分布式中的概念,因为 es 本质上是一个分布式数据管理系统
    字面意义上理解无非就是分片,副本,归根结底 shard,replica 是保证服务的可靠性和尽量利用分布式系统的整体性能利用率
    BeautifulSoap
        33
    BeautifulSoap  
    OP
       2023-06-09 17:31:14 +08:00 via Android
    @raphaell2e 你好那么请问我问 chatgpt 的那些问题,官方最新的文档哪里有讲清楚了?我问的都是最基础的概念问题
    raphaell2e
        34
    raphaell2e  
       2023-06-09 18:50:52 +08:00
    chengxiao
        35
    chengxiao  
       2023-06-09 19:37:41 +08:00
    上面说 GPT4 能解决问题的人 你们没有被 GPT4 坑过么???
    BeautifulSoap
        36
    BeautifulSoap  
    OP
       2023-06-09 20:28:13 +08:00
    @raphaell2e 别扔个 index 就完事,有本事就找到对应章节。如果你自己都无法找到到底是哪个章节或者光是找到相关内容就要找半天,请问一个刚刚学 es 的纯新手看这文档看不懂有问题吗
    KOMA1NIUJUNSHENG
        37
    KOMA1NIUJUNSHENG  
       2023-08-30 23:10:02 +08:00
    其实 op 说的关于官网的问题,绝大部分还是英文的原因,纯英文的文档虽然可以靠 deepl 一段一段的硬啃,但是时间成本太高了,而且有时候翻译也不会那么准确,导致卡壳。如果出一个版本比较新的官方中文文档就没这个问题了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5617 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 03:19 · PVG 11:19 · LAX 19:19 · JFK 22:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.