以前我们有这样的域对象:
import org.springframework.data.annotation.Id;
public ESDocument {
@Id
private String id;
private String field1;
@JsonIgnore
public String getId() {
return id;
}
public String getField1() {
return field1;
}
从而在ES中生成了如下文档:
{
"_index" : "test_index",
"_type" : "_doc",
"_id" : "d5bf7b5c-7a44-42f9-94d6-d59fe3988482",
"_score" : 1.0,
"_source" : {
"field1" : "blabla"
}
}
请注意:
{
"_index" : "test_index",
"_type" : "_doc",
"_id" : "d5bf7b5c-7a44-42f9-94d6-d59fe3988482",
"_score" : 1.0,
"_source" : {
"id": "d5bf7b5c-7a44-42f9-94d6-d59fe3988482",
"field1" : "blabla"
}
}
[1]-https://spring.io/blog/2020/05/27/what-s-new-in-spring-data-elasticsearch-4-0
问题1:
要省略_source中的id字段,通常使用@transient
注释,但正如您所写的,这对id属性不起作用。瞬态特性在Spring数据模块中被忽略(不仅仅是Spring数据Elasticsearch)。
但是您可以使用org.springframework.data.annotation.ReadOnlyProperty
注释:
@Id
@ReadOnlyProperty
private String id;
当然不是不正确,但你发现有问题。我们在存储它的时候总是考虑整个实体,所以我们从来没有想过不写ID。严格地说,这不是必需的,您说得对,因为我们总是将id和source一起放回_id字段中,所以我们可以很容易地将实体放回一起,但我们从来没有认为这是必需的特性。
注:
当您查看ES索引中的数据时,您会发现使用MappingElasticSearchConverter
编写了一个名为_class的附加_source字段,其中包含实体类的名称(或定义的别名)。这允许映射泛型;要了解更多信息,请查看文档--以防您想知道这是从哪里来的。
如何使用spring data-elasticsearch实现这一点?
问题内容: 使用Elasticsearch 1.4.3 我正在建立一种“报告”系统。客户可以选择要在结果中返回的字段。 在90%的情况下,客户端永远不会选择所有字段,因此我认为可以在映射中禁用_source字段以节省空间。但是后来我得知 不返回字段。 因此,我假设我必须为每个字段使用“ store”:true。从我阅读的内容来看,这对于搜索来说会更快,但是我认为从空间角度来看,它与_source相
问题内容: 试图通过easy_install或pip安装psycopg2,并且终端卡在xcrun和lipo之间的循环中。 它在xcrun和lipo之间反弹,并永久卡在此循环中。希望能对此有一些见解。 我使用的是最新版本的OS X Mavericks 10.9。 问题答案: 一个更合适的解决方法是: 原因:xfx的修复程序可能无法在将来的Xcode版本中使用xcode-select来选择您的工具链。
问题内容: 我正在运行一个简单的查询,如下所示: 问题在于,一旦引入,我将不再获得结果。 我努力了: 和 但是它们没有任何区别。除了之外,还有其他方法可以退货吗? 问题答案: 在数组中,使其加载:
为什么比快?我使用的是CPython 3.5.2。 我试着改变我提升的幂,看看它是怎么做的,例如,如果我提升x的10或16的幂,它会从30跳到35,但如果我提升10.0作为浮动,它只是在24.1~4左右移动。 我想这和浮点转换和2次方有关,但我真的不知道。
我正在使用elasticsearch javascript库,正在努力找出如何只返回源对象中的内容。。。我这样提取数据: 但我并没有得到唯一的消息来源。。。如果我将更改为