我想知道在定義索引映射時是否可以使用條件,因為根據欄位的某些值,其他欄位是必需的。
例如 :
PUT /my-index
{
"mappings": {
"properties": {
"age": { "type": "integer" },
"email": { "type": "keyword" },
"name": { "type": "text" },
"is_external": {"type": "boolean" }
if [is_external] == true {
"adress": { "type": "text" },
"date": { "type": "date" }
}
}
}
}
如果沒有辦法做到這一點,我該如何處理?
uj5u.com熱心網友回復:
在映射級別進行這種檢查是沒有意義的,因為最終您的索引將包含帶有is_external: trueand 的檔案,is_external: false因此映射還必須包含檔案的address和date欄位定義,其中is_external: true只能有一個每個索引的單一映射。
如果你想強制一個檔案is_external: true也包含address和date欄位,那么你可以使用帶有drop處理器的攝取管道來做到這一點:
...
{
"drop": {
"if" : "ctx.is_external == true && (ctx.date == null || ctx.address == null)"
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/366903.html
上一篇:彈性搜索不回傳最近30分鐘的資料
