问题标签 [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.
elasticsearch - 无法识别的构面
我是 elastic4s 新手,我正在尝试执行此示例
但是,IDE 似乎无法识别方面。我可能缺少正在使用的导入或依赖项
elasticsearch - 如何获取elasticsearch中的所有字段
如何使用 elastic4s 获取 _source 下的所有字段名称(不是值)?我想要一个所有映射字段的列表。我尝试做类似的事情:
甚至
但这并没有做到。我得到了所有元数据字段,而不仅仅是 _source 下的那些
==== 更新 ===
我发现了这种方式:
有没有更好的方法来获得相同的结果?
scala - 记录elastic4s客户端
看这个例子
是否有一个选项可以将日志记录到 client.execute 以记录客户端所做的所有操作(索引、搜索等)?
我看到了这个答案,但我不想做类似的事情:
我希望客户端根据日志记录级别记录所有内容
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)
没有积极的结果(它们比以前更加随机)。使用此设置的两次连续运行会给出不同的“随机”结果,因此这是不一致的。
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 中执行此操作。
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 映射
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 工作的任何建议都会很棒,谢谢
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。
我错过了什么?
elastic4s - 连接断开时elastic4s自动重新连接
有没有办法(或最佳实践)来处理 elastic4s 中的自动重新连接?
我的情况是弹性集群在我的应用程序后面重新启动(安全更新等)。[显然这并不理想,最好通过滚动重启来处理,但我们还没有完全做到。]
但是,当这种情况发生时,连接将被断开,并且在集群重新联机时永远不会恢复。它一直说没有可用的节点。如果我重新启动应用程序,它将重新连接而不会出现问题。
有没有办法很好地处理这个问题而不必创建一个新的连接(即TcpClient
)?目前我必须将新的分发TcpClient
到应用程序的各个部分,或者将 API 包装在处理这种情况的东西中。两者都没有太大吸引力。
谢谢
elasticsearch - elastic4s搜索id
_id
关于搜索领域的两个问题:
我想使用 elastic4s dsl 查找特定 ID 是否存在。对此查询 elasticsearch API 的 aquivilent:
curl -XGET ' http://localhost:9200/indexName/indexType/_search/exists?q=_id:foo '
我试图做这样的事情:
但这会产生SearchDefinition
无法检查的结果isExists
我想获取所有
_id
的,到目前为止我得到了这个解决方案,但我不确定这是做它的惯用方式client.execute(search(indexName / indexType) 查询“ id”).map( .ids)