问题标签 [elastic4s]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
767 浏览

scala - 使用elastic4s本地客户端进行测试

我一直在使用 elastic4s 进行数据检索,并开始研究测试我当前的代码。我正在尝试创建一个本地客户端,然后我可以使用它(并传递给我的参与者),这对于测试来说比在构建服务器上部署弹性集群并保持它更易于管理。

下面是我到目前为止一直在尝试的代码。这应该启动一个简单的实例,创建一个索引,将视频添加到“视频”索引中,然后检索它。

但是它没有像我期望的那样工作。它在没有中断任何行的情况下运行,但在resp. 我对外部 ES 集群使用相同类型的查询,所以我认为我的设置方式有问题。

0 投票
1 回答
104 浏览

scala - Embedded ES 实例中的补全搜索

我正在尝试在嵌入式实例中进行完成搜索以进行单元测试。我正在使用 elastic4s 和 elasticsearch 2.0.x

我的工作代码如下:

在点击最后一行时,代码将中断 message Field [artist_suggest] is not a completion suggest field。但是,如果我查看nIndex._mappings(0)._fields它包含一个 CompletionFieldDefinition。MatchQuery 返回该数据,所以我知道它被正确添加,我似乎无法弄清楚如何让完成建议器工作。从我在 scala 中的内容来看,它似乎与文档相匹配:https ://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters-completion.html

0 投票
1 回答
211 浏览

elasticsearch - elastic4s - 创建具有给定内容的模板

我想使用 elastic4s api 来删除和创建模板。我找不到创建具有给定内容的模板的 api,只能通过提供名称来创建。
不确定如何使用 IndexTemplateDsl。

这是正确的方向吗?

0 投票
2 回答
225 浏览

scala - 使用 Elastic4s 进行渗透查询

我目前正在尝试使用 Elastic4s 创建过滤器查询。我已经了解了这么多,但我似乎找不到任何例子,所以我不确定这是如何工作的。所以我有:

每次运行它都不匹配任何东西。我发现我需要能够渗透到 Id 上,但我似乎找不到任何关于如何做到这一点的示例,甚至在文档中也找不到。我知道使用 Elastic4s 创建过滤器查询以外的查询可以让您指定一个 id 字段,例如:

我已经尝试过这种方式进行渗透,但它不喜欢 id 字段,有谁知道如何做到这一点?

我以前使用 Dispatch Http 来执行此操作,但我正试图摆脱它。之前,我这样做是为了提交过滤器查询:

注意 queryId 只需要类似的东西,但在 elastic4s 中。

0 投票
2 回答
402 浏览

scala - 运行单元测试时嵌入式 ES 实例失败

我目前有以下代码。以下是使用elastic4s库设置本地elasticsearch实例

在这里,我正在创建一个新索引,然后在上面插入 mockES 项。

但是,如果我随后运行查询以在我的任何测试中找到该项目,类似于以下内容:

该程序因以下错误而中断:

几天来,我一直试图断断续续地寻找解决此问题的方法,但找不到任何可以帮助我解决此问题的方法,因此现在查看 SE 上是否有人遇到过类似问题并发现一个修复。

更新

我已经重写了我所拥有的,所以这是一个更简单的例子,因为以前我自己的代码中仍然有几个类我正在使用。

目前,如果您运行它,它将无法执行批量插入,然后NoShardAvailableActionException在“测试”尝试运行搜索时收到。这可能是由specs2引起的问题吗?

0 投票
1 回答
204 浏览

scala - 使用 Elastic4s 向 percolator 注册查询

我正在尝试使用 elastic4s 库注册过滤器查询。经过大量研究,我发现我需要使用类似的东西:

好像我正在这样做:

但是每当我尝试运行 esClient.execute 时,我最终都会遇到一些解析错误,但它通过 curl 可以正常工作:

所以我觉得我需要以不同的方式格式化查询,但它不在文档中,我似乎无法找到任何示例。我尝试了一些其他格式,例如:

但是似乎没有什么可以工作,我唯一可以工作的就是这样:

但是有了这个,我无法指定我真正想要匹配的内容。有没有人有这方面的经验,或者有什么想法?

0 投票
1 回答
440 浏览

scala - 是否可以/建议使用 elastic4s 索引 JSON 数据字符串?

我正在尝试将一串 JSON 数据传递到这样的索引语句中,其中 inputDoc 是我的 JSON 字符串:

我收到一个无法解析 doc 的编译器错误,我假设是因为它正在寻找 DocumentSource 或 DocumentMap 而不是我传递的字符串。

根据此文档,在我看来,我应该能够传递杰克逊将编组为 JSON 的字符串。不过,基于这个线程,在我看来,elastic4s 不支持在不为其创建模板的情况下对 JSON 字符串进行索引。

我的问题有两个:1)是否可以在不创建案例类来映射数据的情况下索引 JSON 字符串?2)如果可能的话,是否可取?还是因为最好知道我正在索引的数据的结构而不是仅仅添加一个我不一定检查过的 JSON 字符串而气馁?

我正在使用 ElasticSearch 2.1.1 版。这是我的 elastic4s 依赖项:

0 投票
1 回答
659 浏览

elasticsearch - elastic4s 从 JSON 源构建查询

有没有办法elastic4s从 JSON 字符串构建查询?

例如,类似:

0 投票
1 回答
111 浏览

scala - 播放期间会发生什么!控制器实例化?

我在 Play 框架的控制器中遇到了奇怪的行为。我正在使用 elastic4s 连接到 Elasticsearch 集群,并且取决于建立连接的精确时间,它要么工作要么不工作。我目前为止的最小示例如下所示:

我通过启动应用程序sbt run。然后我可以尝试获取两个端点。curl localhost:9000/lazyStats/工作正常,与我的 ES 节点对话并返回正确的统计信息。curl localhost:9000/eagerStats/从 ES 传输层抛出异常(最后的堆栈跟踪)。由于我的代码在两种情况下都是相同的(唯一的区别是valvs lazy val)我想构造函数是以一种奇怪的方式实例化的。任何人都可以确认或否认吗?

作为旁注,我可以创建一个单独的类来处理 ES 连接和@Inject它(可能也使它成为一个@Singleton)——这可能是首选的解决方案。不过,我发现所描述的行为很奇怪,我很高兴看到解释。

elastic4s是官方 ES Java 驱动程序的一个小包装器,我非常有信心在这种情况下不会发生任何魔法。

更新:我在与独立进程相同的机器上运行单节点 ES 集群。它配置正确,甚至还启动并运行了一个 kopf 插件。REST 接口工作正常;如果我使用延迟初始化的连接,传输接口也可以工作。

我正在使用 ES 2.2.0(客户端和服务器端)、Play 2.4.6、scala 2.11.7 和 SBT 0.13.8。

来自急切连接的堆栈跟踪:

0 投票
1 回答
1944 浏览

json - 将 Scala 对象序列化为 Json 并索引到 Elasticsearch 时出现 NotXContentException

我试图在 Elasticsearch 中索引一个相对复杂的 Scala 对象。这是我的案例课程:

对于这些案例类中的每一个,我都有一个伴随对象,其中包含以下样式的 Format[ObjectType] writes 方法的定义:

这是我的连接设置和执行索引的方法:

当我运行我的应用程序时,当我尝试索引 Game 对象时,我从 Elasticsearch 收到以下异常:

我无法找到有关此异常的信息。我知道这意味着我的对象没有正确格式化以被索引,但我不确定如何排除故障。我已经确认,当我打印出 Json 而不是索引它时,我有有效的 Json。关于为什么 Elasticsearch 不喜欢我试图索引的 Json 的任何想法?