底线——如何将我的简单percolator查询转换为spring数据弹性搜索?任何线索都很感激。谢谢
我一直在尝试使用spring data elastic search编写下面的percolate查询
"query": {
"percolate": {
"field": "query",
"document": {
"message": "A new bonsai tree in the office"
}
}
}
我试过了
Criteria criteria = new Criteria("query").is(
new Criteria("percolate")
.is(
new Criteria("field").is("query")
.and("document")
.is(new Criteria("message").is(text))
)
);
试过
Query query = new StringQuery(String.format("{\n" +
" \"query\": {\n" +
" \"percolate\": {\n" +
" \"field\": \"query\",\n" +
" \"document\": {\n" +
" \"message\": \"%s\"\n" +
" }\n" +
" }\n" +
" }\n" +
"}",text));
还尝试了NativeSearchQuery,但都没有成功。
我懂了https://tothepoint.group/matching-documents-with-elasticsearch-percolator-query/作者使用PercolateQueryBuilder的地方(https://github.com/ophalsp/elasticsearch-percolator)但我没有在spring data elastic search中看到PercolateQueryBuilder。
编辑:-我尝试了所有实现QueryBuilder的生成器。因为他们都没有在XContentBuilder生成器中进行查询或渗透(如下所示),所以他们不工作
protected void doXContent(XContentBuilder builder, Params params) throws IOException {
builder.startObject("query");
我还可以看到,PercolateQueryBuilder是percolator-客户端的一部分,这是org.elasticsearch.client.transport的一部分,在Spring启动中被排除在外
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-elasticsearch</artifactId>
<version>4.2.1</version>
<scope>compile</scope>
<exclusions>
<exclusion>
<artifactId>transport</artifactId>
<groupId>org.elasticsearch.client</groupId>
</exclusion>
</exclusions>
</dependency>
我将添加org。弹性搜索。客户运输并试一试。
以我的成功回答了我自己的问题。可能会帮助别人。
添加以下依赖项后
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>7.12.1</version>
</dependency>
通过下面的代码,我可以在Percolator上运行查询。我不知道为什么Spring Boot删除了上述依赖项。到目前为止,我还没有遇到任何问题。如果我因为上述依赖项而面临问题,我会在这里更新。
public Query buildLookUpQuery(String text){
XContentBuilder docBuilder = null;
try {
docBuilder = XContentFactory.jsonBuilder().startObject();
docBuilder.field("message", text);
docBuilder.endObject();
} catch (IOException ioException) {
log.error("Unable to build a query ", ioException.getMessage());
}
PercolateQueryBuilder percolateQuery = new PercolateQueryBuilder(QUERY,
BytesReference.bytes(docBuilder),
XContentType.JSON);
return new NativeSearchQueryBuilder()
.withQuery(percolateQuery)
.build();
}
它们在ES术语表中没有提及。 它们与其他ES实体(碎片/节点/索引)的关系是什么?
升级到Spring boot 2.3和Spring data elasticsearch 4.0.9后的问题。我有这样的文档: 这在spring data 3.0中与Jackson配合得很好,但升级到4.0后,Jackson不再可用,现在我收到了一个来自spring的实例化异常,无法实例化URL对象。 例外情况: 任何关于解决方案的想法都将受到赞赏。
我有一个Spring Boot应用程序,我想在其中单独使用弹性搜索2.2.0(而不是嵌入式服务器),我想使用Spring Data弹性搜索,那么Spring Data支持的弹性搜索版本是什么,我如何配置它以连接到运行在localhost:9200中的弹性搜索实例? 实际上,我尝试在application.properties文件中添加以下选项: 后来,我创建了这个配置类: 我得到了这个StackT
我有一个设计糟糕的文档结构: 我想从上面的文档中检索标题、Fach和代码。 多谢了。
我正在使用spring数据elasticsearch来执行CRUD操作。 我有一个扩展Elasticsearch chRepository的自定义存储库。 最终,ElasticsearchRepository扩展了CrudRepository,这意味着可以更新现有记录。 问题是,你是如何做到这一点的?我还没有找到一个名为“update()”的方法 我认为做以下事情会有用(代码从https://gi
我需要运行以下查询: 但我不能用spring data elasticsearch轻松运行这个。 有什么办法吗 spring data elasticsearch是否很好地支持所有elasticsearch查询DSL