私は同じバージョンの1.5.6.RELEASE
とspring-boot-starter-data-elasticsearch
のアプリケーションを使用しています。Spring Data ElasticsearchのLong型ではなくString型のフィールドのIDを自動生成しません
私は、などのモデルGreeting
を持っている:
@Document(indexName = "index", type = "greetings")
public class Greeting implements Serializable{
@Id
private Long id;
private String username;
// Getter, Setter and constructor added here
}
は私のコントローラやサービスのクラスはid
の種類せずに、以下の例のために同じです。私は以下のPOSTリクエストを送信した
:
curl -H "Content-Type: application/json" -X POST -d '{"username":"sunkuet02","message": "this is test"}' http://localhost:8080/api/greetings
それは返信:
{"id":null,"username":"sunkuet02","message":"this is test"}
は、その後、私はStringに
id
の種類を変更する
Greeting
クラスを変更しました。
@Document(indexName = "index", type = "greetings")
public class Greeting implements Serializable{
@Id
private String id;
private String username;
// Getter, Setter and constructor added here
}
クリーン、同じPOSTリクエストの構築と送信:
curl -H "Content-Type: application/json" -X POST -d '{"username":"sunkuet02","message": "this is test"}' http://localhost:8080/api/greetings
を、以下の応答だ:シナリオはある
{"id":"AV2cq2OXcuirs1TrVgG6","username":"sunkuet02","message":"this is test"}
を:id
フィールドのタイプがある場合にはLong
それはidを自動的に生成しませんが、タイプがString
ならばid au徹底的に
私の質問は以下のとおりです。
- 実際の理由は何ですか?
spring-data-elasticsarch
は、String
のフィールドは常にid
フィールドを使用しますか?id
タイプがLong
で、注釈を追加することなく設定する方法はありますか。