【问题标题】:Spring Data Elasticsearch force create type for current indexSpring Data Elasticsearch 强制为当前索引创建类型
【发布时间】:2016-10-04 12:20:56
【问题描述】:

目前我正在使用 ProductSearch 类创建 Elasticsearch 存储库,通过添加仅带有 indexName 的 @document 注释,类型应该为空,因为我没有设法向 indexname 添加任何类型。但是当我调用 productSearchRepository.findByName(query) 时,它会在 indexName 中搜索 type = "productsearch",这是代码的 sn-p。

@Document(indexName = "product")
public class ProductSearch extends Product {
}

这里是 productSearch 存储库

@Repository
public interface ProductSearchRepository extends ElasticsearchRepository<ProductSearch, Long> {
    @Query("{\"match\": {\"name.en\" : \"?0\"}}")
    List<ProductSearch> findByName(String name);
}

这是来自 elasticsearch 的日志,显示它添加了一个 type = "productsearch"

[2016-10-04 14:03:53,634][WARN ][index.search.slowlog.query] [Apache Kid] [product][1] took[112.3micros], took_millis[0], types[productsearch], stats[], search_type[DFS_QUERY_THEN_FETCH], total_shards[5], source[{"from":0,"size":10,"query_binary":"eyJtYXRjaCI6IHsibmFtZS5lbiIgOiAiYWJjIn19"}], extra_source[], 
[2016-10-04 14:03:53,634][WARN ][index.search.slowlog.query] [Apache Kid] [product][2] took[243.9micros], took_millis[0], types[productsearch], stats[], search_type[DFS_QUERY_THEN_FETCH], total_shards[5], source[{"from":0,"size":10,"query_binary":"eyJtYXRjaCI6IHsibmFtZS5lbiIgOiAiYWJjIn19"}], extra_source[], 
[2016-10-04 14:03:53,634][WARN ][index.search.slowlog.query] [Apache Kid] [product][3] took[154.2micros], took_millis[0], types[productsearch], stats[], search_type[DFS_QUERY_THEN_FETCH], total_shards[5], source[{"from":0,"size":10,"query_binary":"eyJtYXRjaCI6IHsibmFtZS5lbiIgOiAiYWJjIn19"}], extra_source[], 
[2016-10-04 14:03:53,634][WARN ][index.search.slowlog.query] [Apache Kid] [product][4] took[161.5micros], took_millis[0], types[productsearch], stats[], search_type[DFS_QUERY_THEN_FETCH], total_shards[5], source[{"from":0,"size":10,"query_binary":"eyJtYXRjaCI6IHsibmFtZS5lbiIgOiAiYWJjIn19"}], extra_source[], 

我需要的不是为我的文档创建类型。

任何帮助将不胜感激。 提前致谢。

【问题讨论】:

  • A(映射)类型始终是强制性的,如果不指定映射类型,您不能将文档存储在索引中。此外,这些日志显示以下查询正在运行{"match": {"name.en" : "abc"}}(从query_binary 解码)并且速度很慢(即index.search.slowlog.query)。
  • 但是没有任何解决方案可以创建这样的存储库查询/product/_search 而不是/product/productsearch/_search,请进一步解释日志缓慢是什么意思?
  • 嗨!你想通了吗?似乎 spring-es 创建了一个类型,但只是按名称。但是我需要为该类型明确命名一些字段(因为排序不起作用,如果类型未知,例如,如果还没有文档被存储)

标签: java spring elasticsearch spring-data-elasticsearch


【解决方案1】:

productsearch 只是 Spring Data ES 用于在您的 product 索引中创建映射类型的名称。

在您的情况下,在/product/_search/product/productsearch/_search 中搜索将产生相同的结果(如果您在product 索引中有一个类型,似乎就是这种情况)。

/product/_search 只是一个快捷方式,用于在您的product 索引中存在的所有映射类型中进行搜索。

你可以阅读here了解如何配置慢日志。

【讨论】:

  • 这个运气好吗?
猜你喜欢
  • 2013-12-28
  • 2017-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-11
  • 1970-01-01
  • 2016-11-01
  • 2021-08-15
相关资源
最近更新 更多