问题标签 [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 回答
40 浏览

elasticsearch - 无法识别的构面

我是 elastic4s 新手,我正在尝试执行此示例

但是,IDE 似乎无法识别方面。我可能缺少正在使用的导入或依赖项

0 投票
1 回答
2195 浏览

elasticsearch - 如何获取elasticsearch中的所有字段

如何使用 elastic4s 获取 _source 下的所有字段名称(不是值)?我想要一个所有映射字段的列表。我尝试做类似的事情:

甚至

但这并没有做到。我得到了所有元数据字段,而不仅仅是 _source 下的那些

==== 更新 ===

我发现了这种方式:

有没有更好的方法来获得相同的结果?

0 投票
1 回答
625 浏览

scala - 记录elastic4s客户端

看这个例子

是否有一个选项可以将日志记录到 client.execute 以记录客户端所做的所有操作(索引、搜索等)?

我看到了这个答案,但我不想做类似的事情:

我希望客户端根据日志记录级别记录所有内容

0 投票
1 回答
496 浏览

elasticsearch - 弹性在压力下给出不一致的结果

我们的 ES 相当慢,我们还没有优化它(和查询),但是根据这个链接,来自 Elastic 的请求拒绝是一种反馈形式,要求放慢速度并调整批量的大小。

我们构建了一种背压形式,其中阻塞批量的大小(同时发送的单个请求的列表,我们还没有使用 MSearch)取决于前一个批量中拒绝了多少请求。在开始新的批量之前,我们等待当前批量完成。显然,所有被拒绝的请求都被重新注入到请求队列中(以构造查询所需的数据的形式)。例如,如果我们的 Elastic 可以同时处理 500 个请求,而我们发送 600 个请求,其中一些将被拒绝,新的大小将减少到 480 个(20% 折扣)。

我们发现ES 对先前拒绝的请求返回不同的结果。例如,它可能会返回类似于预期结果的结果,但偏移量为 2。我们还缺少地址应该有 1 个结果的结果,但由于这个错误而没有结果。

如果批量大小小于 ES 可以处理的阈值,那么一切都会按预期进行,我们会得到预期的结果。

看起来这不是图书馆的(elastic4s)问题。

弹性配置:2 个节点,每个节点 5 个分片

每个节点:2 个 CPU、32 GB 内存、16 GB 堆。其他都是默认的

我在网上找不到任何信息,有人遇到过这个问题吗?解决方案是什么?

到目前为止,我们尝试了什么:

  • Thread.sleep正如上面的链接所暗示的那样,在批量之间。

  • 删除查询级别的缓存以及从索引中删除它。

  • 在不同的(较慢的)硬件上尝试相同的索引。

  • 验证这不是竞争条件(在我们的代码中)问题。

更新:

查询是什么样的。

用于搜索的线程池: "search" : { "type" : "fixed", "min" : 4, "max" : 4, "queue_size" : 1000 },

第二次更新:

我们还尝试为我们的查询设置偏好(认为这是分片的问题):.preference(Preference.Primary)没有积极的结果(它们比以前更加随机)。使用此设置的两次连续运行会给出不同的“随机”结果,因此这是不一致的。

0 投票
1 回答
262 浏览

scala - Elastic4s 5.x 中的多字段

我目前正在使用 Elastic4s v5.0,它仍然具有用于以多种方式索引字段的多字段类型。

但是,我收到以下错误:

答案ElasticSearch 5: MapperParserException with multi_field and documentation here https://www.elastic.co/guide/en/elasticsearch/reference/current/multi-fields.html说要使用“字段”,但我找不到如何在 elastic4s 中执行此操作。

0 投票
1 回答
238 浏览

scala - RemoteTransportException,在文本字段上进行聚合时,字段数据在文本字段上被禁用

我正在从 2.x 迁移到 5.x 我正在像这样向索引添加值

但是我也想按字段获取所有值:

但我得到了这个例外:

RemoteTransportException[[8vWOLB2][172.17.0.5:9300][indices:data/read/search[phase/query]]]; 嵌套:IllegalArgumentException[Fielddata 默认在文本字段上被禁用。在 [my_tag] 上设置 fielddata=true 以便通过反转倒排索引将 fielddata 加载到内存中。请注意,这可能会占用大量内存。];

我想也许可以使用这里keyword显示的,但是这些字段在高级(由用户发送)中是未知的,所以我不能使用 perpend 映射

0 投票
1 回答
1480 浏览

scala - Elastic4s - 到 Elasticsearch 集群的 HTTPS 连接

我正在尝试使用 elastic4s-http vis https 连接到 Elasticsearch,但找不到使用 https 而不是 http 的方法。

我目前正在使用:

连接到实例。

当我在日志中看到这一点时,我似乎正在建立连接:

INFO com.sksamuel.elastic4s.http.HttpClient$ - 在http://host:port上创建 HTTP 客户端

调试 com.sksamuel.elastic4s.http.search.SearchImplicits$SearchHttpExecutable$ - 执行搜索请求:{"query":{"match":{"status":{"query":"Listed"}}}}

调试 com.sksamuel.elastic4s.http.search.SearchImplicits$SearchHttpExecutable$ - 执行弹性请求 POST:/myindex/_search?

调试 com.sksamuel.elastic4s.http.search.SearchImplicits$SearchHttpExecutable$ - {"query":{"match":{"status":{"query":"Listed"}}}}```

但后来我明白了:

并且不返回任何响应。

关于如何让 https 工作的任何建议都会很棒,谢谢

0 投票
2 回答
279 浏览

scala - 无法为包含具有自定义 Key 类型的 Map 的类型生成可索引

我正在使用 scala 2.11.11、elastic4s 5.4.5 和 elastic4s-circe 5.4.5

这不会编译:

根据文档:

只需在下面为您选择的库添加导入,然后在范围内使用这些隐式,您现在可以将您喜欢的任何类型传递给 doc,并且 Indexable 将自动派生。

使用import io.circe.generic.auto._import com.sksamuel.elastic4s.circe._用于 elastic4s-circe。

我错过了什么?

0 投票
1 回答
55 浏览

elastic4s - 连接断开时elastic4s自动重新连接

有没有办法(或最佳实践)来处理 elastic4s 中的自动重新连接?

我的情况是弹性集群在我的应用程序后面重新启动(安全更新等)。[显然这并不理想,最好通过滚动重启来处理,但我们还没有完全做到。]

但是,当这种情况发生时,连接将被断开,并且在集群重新联机时永远不会恢复。它一直说没有可用的节点。如果我重新启动应用程序,它将重新连接而不会出现问题。

有没有办法很好地处理这个问题而不必创建一个新的连接(即TcpClient)?目前我必须将新的分发TcpClient到应用程序的各个部分,或者将 API 包装在处理这种情况的东西中。两者都没有太大吸引力。

谢谢

0 投票
1 回答
741 浏览

elasticsearch - elastic4s搜索id

_id关于搜索领域的两个问题:

  1. 我想使用 elastic4s dsl 查找特定 ID 是否存在。对此查询 elasticsearch API 的 aquivilent:

    curl -XGET ' http://localhost:9200/indexName/indexType/_search/exists?q=_id:foo '

我试图做这样的事情:

但这会产生SearchDefinition无法检查的结果isExists

  1. 我想获取所有_id的,到目前为止我得到了这个解决方案,但我不确定这是做它的惯用方式

    client.execute(search(indexName / indexType) 查询“ id”).map( .ids)