Well,不要刷屏了

es里的document的"_id"和org.apache.lucene.search.ScoreDoc.doc是什么关系

Lucene | 作者 liuliuliu | 发布于2019年05月21日 | 阅读数:3017

es里的document的"_id"和org.apache.lucene.search.ScoreDoc.doc是什么关系?
已邀请:

hapjin

赞同来自: liuliuliu

org.apache.lucene.search.ScoreDoc.doc 应该是:Apache Lucene - Index File Formats 提到的:Document Numbers
文档 index 到Lucene中时,会生成 segment。document nubmer从0开始,每索引一篇文档到segment里面,document nubmer加1.segment内document number是唯一的。


Internally, Lucene refers to documents by an integer document number. The first document added to an index is numbered zero, and each subsequent document added gets a number one greater than the previous.


 而es中的 _id 只是ES 用来:get/delete 文档时 使用的一个id,与Lucene中的Document Number没有关系:


Most search applications using Apache Lucene assign a unique id, or primary key, to each indexed document. While Lucene itself does not require this (it could care less!), the application usually needs it to later replace, delete or retrieve that one document by its external id


参考:choosing-fast-unique-identifier-uuid

Charele - Cisco4321

赞同来自:

两者之间没有任接关系。
 
如果你了解Lucene,你就会知道
本质上你操作的是一个目录,用IndexWriter来写,用IndexReader来读,用IndexSearcher来查。
这个目录是一个大的对像,里面包括许多Lucene的文档,一个文档有一个ID
这个是int类型的
 
 
ES里面,索引是有分片的,物理表现就是,每一个分片就是上面说的那个Lucene数据目录!
(当然,还包括ES自己的信息,比如状态信息什么的)
 
ES里面,索引是由文档组成的,一个文档可以在这个索引的任何分片里面。
这个文档号是string类型的,
这个号是用标识这个文档的,还用来进行hash入到哪个分片里面
(当然还有routing参与,这是另外的话题)
 
 
所以说没有任何关系。
 
 

要回复问题请先登录注册