私はそのような JsonObject を持っています:
{
"success": true,
"type": "message",
"body": {
"_id": "5215bdd32de81e0c0f000005",
"id": "411c79eb-a725-4ad9-9d82-2db54dfc80ee",
"type": "metaModel",
"title": "testchang",
"authorId": "5215bd552de81e0c0f000001",
"drawElems": [
{
"type": "App.draw.metaElem.ModelStartPhase",
"id": "27re7e35-550j",
"x": 60,
"y": 50,
"width": 50,
"height": 50,
"title": "problem engagement",
"isGhost": true,
"pointTo": "e88e2845-37a4-4c45-a030-d02a3c3e03f9",
"bindingId": "90f79d70-0afc-11e3-98d2-83967d2ad9a6",
"model": "meta",
"entityType": "phase",
"domainId": "411c79eb-a725-4ad9-9d82-2db54dfc80ee",
"authorId": "5215bd552de81e0c0f000001",
"userData": {},
"_id": "5215f4c5d89f629c1700000d"
},
{...}
]
}}
このオブジェクトの一部だけにインデックスを付けたいので、自分で明示的なマッピングを定義し、動的マッピングを無効にしました。マッピングは次のとおりです。
String mapping=XContentFactory.jsonBuilder().startObject().
startObject("domaindata").field("dynamic","false").
startObject("properties")
.startObject("success").field("type","string").endObject()
.startObject("type").field("type","string").endObject()
.startObject("body").field("type", "object")
.startObject("properties")
.startObject("id").field("type","string").field("store","yes").endObject()
.startObject("type").field("type","string").field("store","yes").endObject()
.startObject("title").field("type","integer").field("store","yes").endObject()
.startObject("drawElems").field("type","nested")
.startObject("properties")
.startObject("type").field("store","yes").field("type","string").endObject()
.startObject("title").field("store","yes").field("type","string").endObject()
.endObject().endObject().endObject().endObject().endObject().endObject().endObject().string();
このマッピングをインデックスに追加しました:</p>
node.client().admin()
.indices().prepareCreate("testdomaindata")
.addMapping("domaindata", mapping)
.execute().actionGet();
次のコードで索引付けされます。
node.client().prepareBulk().add(node.client()
.prepareIndex("testdomaindata","domaindata",string).setSource(responseDomainData1))
.execute().actionGet();
GetResponseと Head Plugin を使用して、jsonObject のインデックスが正しく作成されているかどうかを確認しました。しかし、問題はこのマッピングにあり、jsonObject はまったくインデックス化されていないようです。head プラグインでは、インデックスとタイプが作成されていますが、このインデックスとタイプにはドキュメントがありません。
間違ったマッピングを定義しましたか? または、他のコードに間違いがありますか? 誰かアドバイスをくれませんか?どうもありがとう!
インデックス メタデータで取得したマッピングは次のとおりです。
{
domaindata:
{
dynamic: false
properties: {
body: {
properties: {
id: {
store: true
type: string
}
title: {
store: true
type: integer
}
drawElems: {
properties: {
title: {
store: true
type: string
}
type: {
store: true
type: string
}
}
type: nested
}
type: {
store: true
type: string
}
}
}
type: {
type: string
}
success: {
type: string
}
}
}
}