拿 GPT 学 ElasticSearch 实在太鸡儿坑了

2023-06-07 15:25:27 +08:00
 BeautifulSoap

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

最近在学 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 的回答安全矛盾。再见了您。所以,有人能回答下我问的这几个问题吗?

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

> 官方 Guide 文档找半天根本找不到面向新手介绍什么是 index ,shard ,primary shard, replica shard 这种概念的地方
BeautifulSoap
2023-06-07 17:59:37 +08:00
@registerrr 不是错觉,现在 new bing 感觉完全成了一个智障了
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
2023-06-07 19:06:59 +08:00
@Morriaty 文档里都说了,“本书基于 Elasticsearch 2.x 版本,有些内容可能已经过时”,目前 es 都 8.8 了,官方也不推荐。所以我直接看的最新官方英文文档,然而并没方便找到相关内容

https://www.elastic.co/guide/en/elasticsearch/reference/8.8/elasticsearch-intro.html
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
2023-06-07 19:56:21 +08:00
所以上面 GPT4 的回答是真的吗
locoz
2023-06-07 20:39:41 +08:00
一点开你的对话就能发现肉眼可见的严重问题,使用方法完全错误...

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

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

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

---

正确做法是什么?使用 GPT4 ,复制官方文档内容,直接丢给 GPT4 让它按照你的问题方向进行解读。同时,在交互内容过多时,适时清空 session ,重新粘贴新的、需要了解的文档内容进行同样的操作。只要你按这个操作逻辑去使用,在内容没有触发到它那个抽风的点的情况下,它回复的内容就都会是正确且符合你要求的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/946647

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX