问题标签 [elasticsearch-jest]
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 - 插入带有 _parent 字段的元素
我将 ElasticSearch 用于应用程序以存储和搜索数据。因为在我的特定情况下搜索关系也很重要,所以我最近更改了数据的结构,现在我正在使用 _parent 字段。(http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-parent-field.html)
我已经设计了搜索查询,效果很好。但是,在我的数据库中插入新的子条目时,我现在遇到了问题。
它应该以这种方式工作:
没有 _parent 字段,当我想实现这一点时
我使用 JEST API 以这种方式插入数据:
当我想实现这一点时:
我应该如何使用 JEST-API 来实现它?
elasticsearch-jest - 如何在内部 java api 或 jest api 中获取弹性搜索索引的类型名称
我有一个名为 demo 的索引,它包含不同的类型。我在我的应用程序中使用弹性搜索 java internal api 和 rest api jest 。基本上我想提出这个要求
有什么办法可以做到这一点,尤其是在 jest api 中?似乎没有文档可以获取其余客户端 api 的映射。我应该怎么办?
java - 使用 Jest 使用自定义分析器创建索引时遇到问题
Jest为 elasticsearch提供了出色的异步 API,我们发现它非常有用。然而,有时结果表明产生的请求与我们预期的略有不同。
通常我们不在乎,因为一切正常,但在这种情况下并非如此。
我想使用自定义 ngram 分析器创建索引。当我按照 elasticsearch rest API 文档执行此操作时,我在下面调用:
然后我确认分析仪配置正确:
作为回应,我收到了多个令牌,例如exp、expe、expec等。
现在使用 Jest 客户端,我将配置 json 放到我的类路径上的一个文件中,内容与上面的 PUT 请求的正文完全相同。我执行这样构造的 Jest 动作:
结果
Primo - 使用 tcpdump 检查实际发布到 elasticsearch 的内容是(打印得很漂亮):
/li>Secundo - 生成的索引设置为:
/li>Tertio - 检查分析仪,
curl -XGET 'localhost:9200/test/_analyze?analyzer=keyword&text=Expecting many tokens
我只得到一个令牌!
问题 1. Jest 没有发布我的原始设置 json 而是一些处理的原因是什么?
问题 2.为什么 Jest 生成的设置不起作用?
java - Elastic search java client. Initialisation of TransportClient takes long time
Why does default initialisation of TransportClient()
for elasticsearch takes much more time then initialisation of jest client?
Code for TransportClient:
Code for jest client:
Jest client is light. However I need some extended functionality that have elasticsearch java client, but doesn't have jest client.
Is it possible to decrease time of initialisation for TransportClient by configuration? Why does it take too much time?
P.S. Initialisation of TransportClient takes approximately 6+ sec for me on Mac 16 GB of RAM.
Please, not that I initialise clients just once in code (using static and/or thread safe singleton)
java - JestResult.getSourceAsObjectList - 用于“@timestamp”或看似任何以“@”开头的字段
如何使用 JestResult.getSourceAsObjectList 映射字段“@timestamp”?实际上,我不知道如何映射名称以“@”开头的任何字段。它一直设置为“null”。
例如,如果 Elasticsearch 查询返回
并且有一个匹配的 POJO Java 类
然后做
打印出来
所以“@version”和“@timestamp”没有被正确映射。
JsonObject 本身似乎可以使用“@”符号:
输出:“zzz”
JestResult 的正确用法是什么。getSourceAsObjectList 映射名称以“@”开头的 json 字段?
注意:这是为了
java - 在不使用 ImmutableSettings 的情况下使用设置调用 CreateIndex
在 Jest 自述文件中有一个使用设置创建索引的示例,但它使用ImmutableSettings
ElasticSearch 库中的类。
不幸的是,由于一些冲突,我们不能在我们的项目中包含 ElasticSearch 库。有没有办法使用 CreateIndex.Builder 来创建带有设置的索引而不使用ImmutableSettings
ElasticSearch 库中的类?
java - 开玩笑 getSourceAsObject 总是返回 NULL
我正在尝试来自Jest的几个示例,以用作 ElasticSearch 集成的 POC。
现在,我正在尝试一个基本的 GET。我创建了一个名为 Document 的 POJO。其中有一些基本的 setter 和 getter 是一些字段。我填充它,然后使用 GSON 生成 JSON 文本。
从这个生成的 JSON 中,我进入 ElasticSearch Sense 并执行以下操作:
这生成就好了。然后我尝试使用Get
从 Java 中提取值,如下所示:
字符串json
返回我所期望的(显示_index、_type、_id,当然还有_source)。但是,doc
始终显示为 NULL。我不确定为什么会这样。
为了看看这是否只是一个 Get 问题,我继续尝试搜索。我做了以下代码片段:
查看时result
,会显示对象的 JSON。但是,List<Document> results
结果为 NULL。使用时hits
,命中的大小是正确的,但是“source”和“ex”都是NULL。
关于我做错了什么的任何想法?
更新
阅读 Cihat 的评论后,我继续并添加了日志记录。事实证明,在尝试转换日期时出现错误(因此它总是返回为 NULL)。
我收到以下错误消息:
我尝试了所有不同的格式:
- 2014 年 11 月 6 日上午 8:29:00(没有时间和制作年份只有 14)
- 2014 年 11 月 6 日上午 8 点 29 分 00 秒(没有时间和制作年份只有 14)
- 2014-11-06 8:29:00 AM(时间和年份变化相同)
- 2014-NOV-06 8:29:00 AM(时间和年份变化相同)
- 2014 年 6 月 11 日上午 8:29:00(同样的事情)
所有这些都失败了。我确定我尝试了其他一些格式,所以不确定日期应该是什么格式。我什至尝试了DateFormat
JavaDocs 中的确切日期,但它仍然失败。每次我进行搜索时,它都会说在 GsonBuilder 中定义 Dateformat,但在 Jest 中我无权访问它。
elasticsearch - Elasticsearch Jest 更新整个文档
我有一个弹性搜索服务器,我正在使用 Jest 客户端通过 java 服务器访问它,我一直在寻找每次更新文档的多个字段的最佳方法。
到目前为止,我已经查看了文档,我发现有两种方法可以做到:
- 通过脚本进行部分更新:我认为它不适合多字段更新(因为我不知道修改后的字段)。
- 整个文档更新:通过重新索引整个文档。
我的问题是知道 Jest 仅通过脚本提供更新,我怎么能更新整个文档?
这是删除文档和索引更新版本的最佳方法吗?
java - ClassNotFoundException 使用 apache-common-lang3
我正在使用 Elasticsearch Jest 客户端来编写我自己的客户端应用程序。
我不断收到这个
java.lang.ClassNotFoundException:org.apache.commons.lang3.StringUtils
即使我已经在构建过程中包含了所有 JAR。
所采取的行动:
- 禁用 maven 并手动添加所有 JARS
- 在 3.3.2 之上添加了 apache-common-lang-2.6
- 清理/重启日食
什么都没有:(
有错误的截图:
错误信息:
elasticsearch - ES - 使用 JEST 存储渗透查询
我正在使用 ES 版本 1.5.2,并通过 JEST 包装器使用 JAVA API。我想创建一些渗透查询并将它们存储在索引中。
在某些地方,我看到一种语法表明我可以将渗透查询存储在任何索引中,但类型必须是“.percolator”类型。在其他地方,我看到查询需要存储在一个名为“_percolator”的特殊索引中。
- 渗透查询应该存储在哪里?
- 查询是否应该像普通文档一样保存在索引中?
下面是我尝试过的一段代码,但它不起作用。