Nebula全文索引对应的Elasticsearch的index中的_id是根据什么生成的

  • nebula 版本:2.5.0
    image

  • 部署方式(分布式 / 单机 / Docker / DBaaS):分布式

  • 是否为线上版本:N

  • 硬件信息: 16CPU、256G内存、10T HDD 磁盘

  • 问题的具体描述:

通过如下方式创建、插入全文索引数据
CREATE FULLTEXT TAG INDEX nebula_index_10 ON player(name,alias);

LOOKUP ON player WHERE PREFIX(player.name, “Bluce”) YIELD player.name, player.alias, player.age;

全文索引生成的Elasticsearch中的index信息如下

据观察了解到Elasticsearch的index中的column_id是根据字段name和alias按MD5加密生成的
请问Elasticsearch的index中的_id是根据什么来生成的?
是否能通过_id的值,查找到nebula中对应的数据?可以的话如何实现?

_id 是通过这个prop value的base64计算出来的。

谢谢哈!
我试了下,比如我这里的数据:
“_id” : “0000000004b068931cc450442b63f5b3d276ea4297Qmx1Y2UgTGl1”,
“column_id” : “b068931cc450442b63f5b3d276ea4297”,
“value” : “Bluce Liu”

id的值=0000000004+column_id+column_id的base64加密后的值
更进一步是:
id的值=0000000004+属性name的MD5加密+column_id值的base64加密后的值

这里的0000000004是怎么计算出来的呢?

还有,是否能通过_id的值,查找到nebula中对应的数据?可以的话如何实现?

0000000004是partId,前边补零。通过es的_id是查不到nebula中的值的,nebula中的值需要通过es中的value来识别。value中可以识别column name.

1 个赞

有资料可以看看你们怎么实现全文索引查询的吗?如果ES的_id和vid 没有存储映射关系的话,你们是去ES查,得到value和column ,然后再通过属性值去nebula 查数据??