2015-10-14 86 views
2

我正在使用Neo4j.rb和searchkick在rails应用程序上进行ruby操作。Searchkick搜索功能不返回任何结果

我有下面的类

class NeoUser 
    include Neo4j::ActiveNode 

    searchkick 

    property :first_name, type: String 
    property :last_name, type: String 
    property :email, type: String 

    has_many :out, :neo_users, rel_class: Following 

end 

在轨控制台我做的:

NeoUser.reindex 

然后:

result = NeoUser.search "*" 

我得到一个空数组回:即结果。尺寸给我0

我有在本地主机上运行我的Neo4j数据库中的数据:7000

我有我的elasticsearch服务器并在本地主机上运行:9200

NeoUser.find_by()不给我正确的结果,所以我无法找出searchkick搜索功能失败的原因。

任何想法?

编辑:

NeoUser.reindex的输出:

CYPHER 36ms MATCH (n:`NeoUser`) RETURN n ORDER BY n.uuid LIMIT {limit_1000} | {:limit_1000=>1000} 
=> true 

VERSIONS

Neo4j的(5.2.9)

Neo4j的核(5.1.6)

elasticsearch(1.0.13)

elasticsearch-API(1.0.13)

elasticsearch运输(1.0.13)

searchkick(0.9.1)

它是否有事情请问我在我的ubuntu机器上安装了elasticsearch版本1.7.2?

编辑2:

我看到,当我使用控制台创建数据,搜索功能是能够返回的数据。

所以我想searchkick无法访问我的本地主机上运行的原始neo4j数据库:9200。

但NeoUser.all确实会返回我所有的数据节点,那么如何告诉searchkick使用特定的数据库,还是存在其他一些问题?

+0

Hrmmm,也许...我使用的是我通过Homebrew安装的elasticsearch 1.6.0。去看看我是否可以更新... –

+0

刚刚更新到1.7.2,没有任何问题...你可能会尝试使用它与ActiveRecord,看看它是否与Searchkick或与neo4j.rb的问题? –

回答

0

这真的很奇怪。我试图在本地复制,但它为我工作。你有什么版本的neo4j/neo4j-core/searchkick

一个建议是,你可以尝试把你的searchkick行放在属性的下面,以防需要看到它们进行搜索。

另外,当你做什么NeoUser.reindex时,你会看到什么样的输出?你有多少个NeoUser节点?

+0

我编辑了这个问题,并且NeoUser.reindex没有显示出我的节点数量(这是18的方式(现在只是测试))。 –

+0

Gotcha。这对我来说看起来很好。我只是想确保elasticsearch在gem中调用的'find_in_batches'正在工作。 –

+0

它与ActiveRecord sqlite工作正常,所以我想问题是与neo4j.rb –