我有一个可通过Hibernate Search 5.6.5和Elasticsearch 2.4.6搜索的模型。
@Entity
@Indexed
class Model {
@Field
String normalField;
@Field
@Lob
String reallyBigField;
}
我不希望Elasticsearch存储reallyBigField
。 Hibernate Search提供了@Field(store = Store.NO)
属性,但它是默认的,看起来,Elasticsearch将以不同于Lucene的方式处理store-property(Lucene不存储任何内容,Elasticsearch具有单独的source-store)。
使用Store.NO
会禁用字段级别的存储。现场级别的存储在我们当前的Search 5.x Elasticsearch集成中并未真正使用。
你是对的,Elasticsearch还将内容存储在一个单独的_source
字段中,这是我们现在用于Hibernate Search中的预测的(由于Elasticsearch的一些限制 - 我们将来可能会做得更好)。
您可以通过修改映射来禁用_source
中的此特定字段:https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-source-field.html#include-exclude。但我们不支持开箱即用,因此您必须手动完成。