标签: spring-data-elasticsearch

在Spring java框架中使用ElasticSearch的最佳方法

我正在开发一个计划将elasticsearch用作数据存储库的系统.我正在尝试选择开发我的应用程序的最佳方法,该应用程序可以索引和查询elasticsearch中的数据.我拥有的系统建立在Spring框架之上.

使用Spring-data-elasticsearch(https://github.com/spring-projects/spring-data-elasticsearch)是一个不错的选择吗?

或者使用elasticsearch核心库本身是一个不错的选择?

我需要处理嵌套数据(内部对象),但Spring-data-elasticsearch最近似乎没有操作.

我希望我能找到问题的解决方案.提前致谢.

java spring frameworks elasticsearch spring-data-elasticsearch

23
推荐指数
1
解决办法
3万
查看次数

ElasticSearch仅返回具有不同值的文档

假设我有这个给定的数据

{
            "name" : "ABC",
            "favorite_cars" : [ "ferrari","toyota" ]
          }, {
            "name" : "ABC",
            "favorite_cars" : [ "ferrari","toyota" ]
          }, {
            "name" : "GEORGE",
            "favorite_cars" : [ "honda","Hyundae" ]
          }
Run Code Online (Sandbox Code Playgroud)

每当我在搜索最喜欢的汽车是丰田的人时查询这些数据,它就会返回这些数据

{

            "name" : "ABC",
            "favorite_cars" : [ "ferrari","toyota" ]
          }, {
            "name" : "ABC",
            "favorite_cars" : [ "ferrari","toyota" ]
          }
Run Code Online (Sandbox Code Playgroud)

结果是两个名称为ABC的记录.如何仅选择不同的文档?我想得到的结果只是这个

{
                "name" : "ABC",
                "favorite_cars" : [ "ferrari","toyota" ]
              }
Run Code Online (Sandbox Code Playgroud)

这是我的查询

{
    "fuzzy_like_this_field" : {
        "favorite_cars" : {
            "like_text" : "toyota",
            "max_query_terms" : 12
        }
    }
} …
Run Code Online (Sandbox Code Playgroud)

java aggregate nosql elasticsearch spring-data-elasticsearch

17
推荐指数
2
解决办法
2万
查看次数

使用Spring Data Elasticsearch的Elasticsearch Rest客户端

我正处于使用Spring启动和AWS弹性搜索服务的情况.AWS Elasticsearch服务,仅提供REST接口.

Elasticsearch Rest Client在这里.

简单地说,是否可以将REST客户端与Spring Data Elasticsearch一起使用?

换句话说,Spring Data Elasticsearch是否适用于Elasticsearch Rest客户端?

Spring Data Elasticsearch非常易于使用,模板提供了我所需要的大部分功能.使用Elasicsearch Rest客户端,我必须自己实现所有功能.

java amazon-web-services elasticsearch spring-boot spring-data-elasticsearch

17
推荐指数
1
解决办法
1万
查看次数

Elasticsearch索引不起作用和错误消息:node null不是集群Cluster [elasticsearch]的一部分,忽略

我刚刚下载了弹性搜索分发并运行它.

curl 'localhost:9200'

{
   "status" : 200,
   "name" : "cbs",
   "cluster_name" : "elasticsearch",
   "version" : {
   "number" : "1.4.1",
   "build_hash" : "89d3241d670db65f994242c8e8383b169779e2d4",
   "build_timestamp" : "2014-11-26T15:49:29Z",
   "build_snapshot" : false,
   "lucene_version" : "4.10.2"
    },
  "tagline" : "You Know, for Search"
}
Run Code Online (Sandbox Code Playgroud)

我试图使用spring-data访问它.在应用程序上下文中(根据spring数据文档)在xml命名空间中添加了以下行:

<elasticsearch:repositories base-package="com.cbs" />
<elasticsearch:transport-client id="client" cluster-nodes="127.0.0.1:9300" cluster-name="elasticsearch" />
<bean name="elasticsearchTemplate" class="org.springframework.data.elasticsearch.core.ElasticsearchTemplate">
    <constructor-arg name="client" ref="client" />
</bean>
Run Code Online (Sandbox Code Playgroud)

这是实体和存储库代码:

@org.springframework.data.elasticsearch.annotations.Document(indexName = "product", type = "product", shards = 1, replicas = 0, indexStoreType = "memory", refreshInterval = "-1")
public class Product {
    @Id …
Run Code Online (Sandbox Code Playgroud)

elasticsearch spring-data-elasticsearch

16
推荐指数
1
解决办法
9660
查看次数

Spring - 找到多个Spring Data模块,进入严格的存储库配置模式

我使用Spring Boot 2和Spring Data,Spring-Data-Elastisearch和Spring-data-Redis(用于http会话).当我启动应用程序.我收到了

2017-10-29 17:38:33.376  INFO 18625 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode!
2017-10-29 17:38:33.451  INFO 18625 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode!
2017-10-29 17:38:33.461  INFO 18625 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode!
2017-10-29 17:38:33.768  INFO 18625 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode! …
Run Code Online (Sandbox Code Playgroud)

spring-data spring-data-jpa spring-data-redis spring-boot spring-data-elasticsearch

15
推荐指数
5
解决办法
1万
查看次数

Spring Data Elasticsearch:具有相同文档的多索引

我正在使用spring-data-elasticsearch,一开始一切正常.

@Document( type = "products", indexName = "empty" )
public class Product
{
...
}

public interface ProductRepository extends ElasticsearchRepository<Product, String>
{
...
}
Run Code Online (Sandbox Code Playgroud)

在我的模型中,我可以搜索产品.

@Autowired
private ProductRepository repository;
...
repository.findByIdentifier( "xxx" ).getCategory() );
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是 - 我在不同的索引中使用相同的Elasticsearch类型,我想对所有查询使用相同的文档.我可以通过池处理更多连接 - 但我不知道如何实现这一点.

我希望有这样的东西:

ProductRepository customerRepo = ElasticsearchPool.getRepoByCustomer("abc", ProductRepository.class);
repository.findByIdentifier( "xxx" ).getCategory();
Run Code Online (Sandbox Code Playgroud)

是否可以在运行时使用不同的索引创建存储库?

非常感谢Marcel

java elasticsearch spring-data spring-boot spring-data-elasticsearch

14
推荐指数
1
解决办法
4703
查看次数

Spring Data Elasticsearch的@Field注释无法正常工作

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

@Document(indexName = "operations", type = "operation")
public class OperationDocument {

@Id
private Long id;

@Field(
    type = FieldType.String, 
    index = FieldIndex.analyzed, 
    searchAnalyzer = "standard", 
    indexAnalyzer = "standard",
    store = true
)
private String operationName;

@Field(
    type = FieldType.Date, 
    index = FieldIndex.not_analyzed, 
    store = true, 
    format = DateFormat.custom, pattern = "dd.MM.yyyy hh:mm"
)
private Date dateUp;

@Field(
    type = FieldType.String, 
    index = FieldIndex.not_analyzed, 
    store = false
) 
private String someTransientData;

@Field(type = FieldType.Nested)
private List<Sector> sectors;

//Getter …
Run Code Online (Sandbox Code Playgroud)

elasticsearch spring-data spring-data-elasticsearch

13
推荐指数
1
解决办法
2万
查看次数

使用 ReactiveElasticsearchClient 时配置 spring.codec.max-in-memory-size

我正在使用 spring-data-elasticsearch 3.2.3 中的 ReactiveElasticsearchClient 和 spring-boot 2.2.0。当升级到 spring-boot 2.2.2 时,我得到了 org.springframework.core.io.buffer.DataBufferLimitException: Exceeded limit on max bytes to buffer : 262144。

它被指示修复使用 spring.codec.max-in-memory-size 但我仍然遇到相同的异常。

咆哮整个例外:

org.springframework.core.io.buffer.DataBufferLimitException: Exceeded limit on max bytes to buffer : 262144
    at org.springframework.core.io.buffer.LimitedDataBufferList.raiseLimitException(LimitedDataBufferList.java:101)
    Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: 
Assembly trace from producer [reactor.core.publisher.MonoCollect] :
    reactor.core.publisher.Flux.collect(Flux.java:3273)
    org.springframework.core.io.buffer.DataBufferUtils.join(DataBufferUtils.java:553)
Error has been observed at the following site(s):
    |_     Flux.collect ? at org.springframework.core.io.buffer.DataBufferUtils.join(DataBufferUtils.java:553)
    |_      Mono.filter ? at org.springframework.core.io.buffer.DataBufferUtils.join(DataBufferUtils.java:554)
    |_         Mono.map ? at org.springframework.core.io.buffer.DataBufferUtils.join(DataBufferUtils.java:555)
    |_         Mono.map ? at org.springframework.core.codec.AbstractDataBufferDecoder.decodeToMono(AbstractDataBufferDecoder.java:96)
    |_       checkpoint ? Body from …
Run Code Online (Sandbox Code Playgroud)

spring spring-mvc spring-data-elasticsearch

13
推荐指数
3
解决办法
2万
查看次数

如何在Spring-data-elasticsearch中启用查询日志记录

我使用spring-data-elasticsearch框架从elasticsearch服务器获取查询结果,java代码如下:

SearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(matchAllQuery()).withSearchType(SearchType.COUNT)
.addAggregation(new MinBuilder("min_createDate").field("createDate"))
.build();

List<Entity> list = template.queryForList(searchQuery, Entity.class);
Run Code Online (Sandbox Code Playgroud)

虽然我怎么知道发送到elasticssearch服务器的原始http查询?如何启用日志记录,我尝试添加log4j,但似乎spring-data-elasticsearch不记录查询.

java elasticsearch spring-data-elasticsearch

12
推荐指数
5
解决办法
7886
查看次数

具有嵌套字段和映射的Spring Data弹性搜索

我正在使用spring-data-elasticsearch和elasticsearch来查询文档.我想对嵌套文档进行嵌套查询.

我在java中有这个:

@Document(indexName = "as", type = "a", indexStoreType = "memory", shards = 1, replicas = 0, refreshInterval = "-1")
class A {

     @Id
     private String Id;

     @Field(type = String, index = analyzed, store = true)
     private String field1;

     // ... Many more Fields.

     @NestedField(type = FieldType.Object, index = analyzed, store = true, dotSuffix = "accounts")
     private List<B> bs;

     // ... getters and setters
}
Run Code Online (Sandbox Code Playgroud)

class B { // some normal pojo }
Run Code Online (Sandbox Code Playgroud)

当我让spring-data进行映射时,我得到:

"a": {
    "properties": {
        "bs": …
Run Code Online (Sandbox Code Playgroud)

elasticsearch spring-data spring-data-elasticsearch

11
推荐指数
1
解决办法
2万
查看次数