问题标签 [spring-data-elasticsearch]

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 投票
2 回答
5519 浏览

elasticsearch - 以点/点结尾的 Elasticsearch 查询字符串,即 +foo.*

我有一个包含很多街道的索引。索引如下所示:

默认搜索查询如下所示:

因此查询foo(sent as +foo*) 或foostr(sent as +foostr*) 会得到Foostr. 9,这是正确的。但是查询foostr.(发送到 Elasticsearch 作为+foostr.*)没有结果,但为什么呢?

我使用标准分析器和没有特殊选项的查询字符串。(使用 时也返回 0 个结果http://127.0.0.1:9200/test/streets?q=+foostr.*)。

顺便提一句。这:(http://127.0.0.1:9200/test/streets?q=+foostr.与上面没有星号的相同)找到正确的结果

问题:

  1. 为什么会这样?

  2. 如何避免这种行为?

0 投票
0 回答
289 浏览

elasticsearch - elasticsearch节点和传输客户端的询问

我已将应用程序配置为在测试中使用弹性搜索节点客户端,在生产/云和开发中使用弹性搜索传输客户端。

data当我运行测试时,我最终在我的项目中得到了一个目录。

请参阅以下目录结构:

这是我的云/开发配置:

这是我的测试配置:

有人可以解释一下这个data目录是什么,是由节点客户端还是传输客户端编写的?

0 投票
6 回答
18096 浏览

elasticsearch - Spring数据弹性搜索-查询-全文搜索

我正在尝试使用弹性搜索进行全文搜索和使用 Spring 数据将弹性搜索与我的应用程序集成。

例如,

有 6 个字段需要索引。

1) 名字 2) 姓氏 3) 职务 4) 位置 5) 行业 6) 电子邮件

http://localhost:9200/test/_mapping/

我可以在映射中看到这些字段。

现在,我想使用搜索输入对这些字段进行搜索。

例如,当我搜索“mike 123”时,它必须搜索所有这 6 个字段。

在 Spring 数据存储库中,

以下方法仅适用于在 firstName 中搜索。

但是,我想搜索所有字段。

我试过了,

在这里,即使输入字符串相同,我也需要传递与 6 个参数相同的输入。此外,具有多个字段的方法名称看起来更大。

无论如何,使用@Query 或 ....

喜欢,

此外,应该为其中一个领域提供提升。

例如,

当我搜索“mike mat”时,如果名字中有任何匹配项,即使其他字段完全匹配,那也应该是结果中的第一个。

谢谢

0 投票
1 回答
1266 浏览

elasticsearch - 带有 const_score 的 spring-data-elasticsearch

我需要运行以下查询:

但我不能用 spring-data-elasticsearch 轻松运行它。

  1. 有没有办法做到这一点?
  2. spring-data-elasticsearch 是否支持所有的 elasticsearch 查询 DSL?
0 投票
3 回答
22364 浏览

elasticsearch - Spring Data Elasticsearch 的 @Field 注释不起作用

我在 pom.xml 中有一个带有 Spring Data Elasticsearch 插件的 Spring Boot 应用程序。我创建了一个我想索引的文档类:

我还为这个类创建了一个存储库:

我做了一个测试,使用存储库索引三个示例对象。它很长,所以我会发布它只需要。事实上,在 ES 服务器中创建的映射忽略了 @Field 注解设置的配置:

没有关于分析器的信息,“someTransientData”被存储和索引,并且 dateUp 被键入为 Long 而不是 Date。

直接从服务器请求的示例文档:

我还注意到,当我第二次运行应用程序时,在启动时出现此错误,仅在索引已经存在时打印:

错误 19452 --- [main] .dersAbstractElasticsearchRepository:加载弹性搜索节点失败:org.elasticsearch.index.mapper.MergeMappingException:合并失败并失败{[mapper [someTransientData] 具有不同的索引值,mapper [someTransientData] 具有不同的标记化值, mapper [someTransientData] 有不同的 index_analyzer, 对象映射 [sectors] 不能从非嵌套更改为嵌套, mapper [operationName] 有不同的存储值, mapper [operationName] 有不同的 index_analyzer, mapper [dateUp] 的类型不同,current_type [long],merged_type [date]]}

这是 Spring Data Elastic Search 的错误还是我做错了什么?

我尝试了 spring boot 提供的稳定版本和 spring-data-elasticsearch 的最后一个快照。我还尝试了插件提供的嵌入式 Elasticsearch 服务器和当前版本的外部服务器。我总是得到相同的结果。

0 投票
1 回答
1171 浏览

solr - 使用 Lucene/Solr/ElasticSearch 的开箱即用联合搜索

我有一个要求,当将特定查询提交到搜索服务器时,我想搜索两个或多个搜索索引。有没有一种方法可以在使用 Lucene/ Solr/弹性搜索?如果这是不可能的,我正在尝试在 API 级别上设置一些东西,其中搜索索引从搜索客户端中抽象出来,其中查询提交给 API 和引擎盖下的 API 将搜索与两个或多个搜索并行索引并组合结果并将其发送回?

这里的重点是,如果有这样的 API 框架可用,或者即使可以开箱即用地使用 Lucene/Solr/Elasticsearch 或者只需安装插件并配置它,我也不想重新发明轮子?

0 投票
2 回答
1186 浏览

elasticsearch - Elastic Search - 使用通配符进行精确短语搜索

我正在寻找有关使用通配符进行精确短语搜索的帮助。

上面的查询,返回以下结果。

1) Java 搜索 2) 弹性 Java 搜索

尾随通配符有效。

但是,当我像下面的查询一样搜索时,

它不会返回任何内容,因为没有任何内容与“ava Se”完全匹配。我期待与上述相同的结果。

前导通配符不起作用。有没有办法做到这一点?

谢谢, Baskar.S

0 投票
0 回答
1185 浏览

spring-data-elasticsearch - Spring data elasticsearch,找不到路径下的嵌套对象

我正在尝试使用 Spring 数据弹性搜索。我还阅读了这个Spring Data Elastic Search with Nested Fields and mapping

得到以下异常。

原因:org.elasticsearch.action.search.SearchPhaseExecutionException: Failed to execute phase [dfs], all shards failed;shardFailures {[-EbBygdLRkKs49wqsf5ewQ][support_team_idx][0]: RemoteTransportException[[Artie][local[6]][indices:data/read/search[phase/dfs]]]; 嵌套:SearchParseException [[support_team_idx][0]:来自[0],大小[10]:解析失败[无法解析源[{“from”:0,“size”:10,“query”:{“nested” :{"query":{"bool":{"must":[{"term":{"supportteam.name":"test"}},{"term":{"supportteam.description":"test" }}]}},"path":"SupportTeam"}}}]]]; 嵌套:QueryParsingException[[support_team_idx] [nested] 未能在路径 [SupportTeam]] 下找到嵌套对象;}

实体:

……

0 投票
1 回答
748 浏览

spring - 使用 elasticsearch.yml 中的默认副本配置

在使用 ElasticsearchTemplate 创建新索引时,我想使用在 elasticsearch.yml 中指定的副本数的设置。这样做的目的是根据 ES 运行的环境来设置副本的数量。例如:在 live 中使用 4 个副本,在 test 中使用 2 个副本。

我认为这可以通过在每个环境的 elasticsearch.yml 中将副本数设置为适当的值来实现。

但是,当我使用 ElasticsearchTemplate(例如,使用 Spring Data ES 存储库)创建新索引时,创建索引请求包含来自 @Document 注释的默认值 1。

因此,不使用 elasticsearch.yml 中的默认值。有没有办法强制使用每个环境的默认设置?

我认为一种方法可以是使用索引模板,但还有另一种方法吗?

谢谢

0 投票
1 回答
2904 浏览

spring-data-elasticsearch - Spring数据elasticsearch CRUD配置

我在配置 spring data elasticsearch 时遇到问题,我按照此处提到的过程Spring bean configuration for Crud Repositories。但我收到错误:

线程“主”org.springframework.beans.factory.BeanCreationException 中的异常:创建名为“customerService”的 bean 时出错:资源依赖项注入失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“customerRepo”的 bean 时出错:设置 bean 属性“elasticsearchOperations”时无法解析对 bean“elasticsearchTemplate”的引用;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建类路径资源 [spring-repository.xml] 中定义的名称为“elasticsearchTemplate”的 bean 时出错:bean 的实例化失败;嵌套异常是 org.springframework.beans.BeanInstantiationException:无法实例化 bean 类 [org.springframework.data.elasticsearch.core. ElasticsearchTemplate]:构造函数抛出异常;嵌套异常是 java.lang.NoSuchMethodError: com.fasterxml.jackson.core.JsonFactory.requiresPropertyOrdering()Z

这是代码:

客户服务.java

客户.java

客户回购.java

主类.java

弹簧客户.xml

spring-repository.xml

我不知道为什么它不起作用。请帮帮我。