2

我正在使用 Neo4j.rb 和 searchkick 作为 ruby​​ on rails 应用程序。

我有以下课程

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

在 Rails 控制台中,我这样做:

 NeoUser.reindex

接着 :

result = NeoUser.search "*"

我得到一个空数组:即 result.size 给我 0

我在 localhost:7000 上运行的 Neo4j 数据库中确实有数据

我在 localhost:9200 上启动并运行了我的 elasticsearch 服务器

NeoUser.find_by() 确实给了我正确的结果,所以我无法弄清楚 searchkick 搜索功能失败的原因。

有任何想法吗?

编辑 :

NeoUser.reindex 的输出:

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

版本

Neo4j (5.2.9)

neo4j 核心 (5.1.6)

弹性搜索(1.0.13)

弹性搜索 API (1.0.13)

弹性搜索传输(1.0.13)

搜索踢 (0.9.1)

这与我在我的 ubuntu 机器上安装了 elasticsearch 1.7.2 版这一事实有关吗?

编辑 2:

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

所以我猜 searchkick 无法访问在我的 localhost:9200 中运行的原始 neo4j 数据库。

但是 NeoUser.all 确实返回了我所有的数据节点,那么我如何告诉 searchkick 使用那个特定的数据库,或者还有其他问题吗?

4

1 回答 1

0

这真的很奇怪。我正在尝试在本地复制,但它对我有用。您的neo4j/ neo4j-core/版本是什么searchkick

一个建议是,您可以尝试将您的searchkick行放在属性下方,以防它需要查看它们进行搜索。

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

于 2015-10-14T07:26:43.603 回答