我有一個簡單的要求,我需要創建一個模板,該模板將在將欄位的值插入彈性搜索索引之前對其進行過濾。
彈性搜索版本:7.10.2
示例:我創建了一個如下所示的模板。
PUT /index_test
{
"mappings": {
"properties": {
"id": {
"type": "keyword"
},
"id_type": {
"type": "keyword"
}
}
}
}
但是,我想將 id_type 的值過濾為“social”,然后才應該將這個檔案插入到檔案中,否則應該只插入 id 或其他欄位(將來)。
我試圖探索fieldData選項,但它不訪問該值,而是取真或假。沒想到。
uj5u.com熱心網友回復:
您可以使用攝取管道來執行此操作,該管道將在索引檔案之前過濾值。
首先,創建一個管道,id_type如果它不滿足給定條件,它將洗掉該欄位:
PUT _ingest/pipeline/type-filter
{
"description": "Filter the id_type field",
"processors": [
{
"remove": {
"if": "ctx.id_type != 'social'",
"field": "id_type"
}
}
]
}
然后,在為您的檔案編制索引時,您可以參考這個攝取管道,以便所有檔案在被索引之前都必須經過它。
PUT index_test/_doc/1?pipeline=type-filter
{
"id": "123",
"id_type": "social" <--- this field will be indexed
}
PUT index_test/_doc/1?pipeline=type-filter
{
"id": "456",
"id_type": "anything" <--- this field won't be indexed
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/413756.html
標籤:
