首页 > 解决方案 > 带有 Elasticsearch 索引的 JanusGraph 不起作用

问题描述

我在 JanusGraph 中添加了混合索引,以支持使用 Elasticsearch 进行全文搜索。

我有混合索引,如:

myindex = mgmt.buildIndex("myesindex", Vertex.class)
    .addKey("name", Mapping.TEXTSTRING.asParameter())
    .addKey("sabindex", Mapping.TEXTSTRING.asParameter())
    .buildMixedIndex("search");

我能够将数据加载到 Elasticsearch 引擎中。我也能够成功执行查询。

我面临的问题是当我点击查询时:

g.V().has('code','abc').valueMap()
==>{str=[some text], code=[abc], sab=[sab], sabindex=[sabindex], name=[[some tex]]}

我成功获得了结果,但是当我尝试使用名称和代码进行搜索时:

g.V().has('name', textContains('some text')).has('code','abc').valueMap()

代码字段也被索引(复合)

那时我没有得到任何结果。尽管数据存在于图形和 Elasticsearch 中。

另一种情况是具有不同名称和代码的相同查询成功运行。我也多次重建图表,但没有得到积极的结果。

标签: elasticsearchgremlinjanusgraph

解决方案


第一个查询显示值为name=[[some tex]]。它缺少最后一个tin text,所以这就解释了为什么查询不匹配 on some text

如果您改为这样做textContains('some tex'),您将获得与第一个查询相同的结果。使用该profile()步骤将表明已使用该步骤myindex

请参阅重新创建方案的要点


推荐阅读