1. 题目形容
有一个index=index_a,只有一列title;
请以此index_a为根底, 保留title;
减少len列,内容为title列的长度;
减少split_title列,内容为title列用空格宰割的数组;
2. 题目筹备
PUT /index_a/_doc/1{ "title": "Thinking in java 4th"}
3. 创立 ingest pipeline
创立一个名为pipeline_a的pipeline
PUT _ingest/pipeline/pipeline_a{ "processors": [ { "script": { ## 3.1 script "source": "ctx.len=ctx.title.length();" } }, { "set": { ## 3.2 set "field": "split_title", "value": "" } }, { "split": { ## 3.3 split "field": "title", "separator": " ", "target_field": "split_title" } } ]}
这个pipeline的创立里,应用了pipeline的3个processor, 别离如下:
3.1 script
script 给index减少一个len字段, 值为 title 字段的长度ctx.len=ctx.title.length();
3.2 set
split_title 给index减少了一个字段 split_title, 值设置为空字符串
3.3 split
split 给index做一个split解决, 输出指标是 title
字段, 输入到字段 split_title
上
因为processor是一个一个流水执行的, 下一个,能够用到上一个的, 所以会正确达到咱们预期
4. reindex并应用pipeline
POST _reindex{ "source": { "index": "index_a" }, "dest": { "index": "index_b", "op_type": "create", "pipeline": "pipeline_a" }}
5. 验证
GET /index_b/_search
{ "took" : 0, "timed_out" : false, "_shards" : { "total" : 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 1, "relation" : "eq" }, "max_score" : 1.0, "hits" : [ { "_index" : "index_b", "_id" : "1", "_score" : 1.0, "_source" : { "len" : 20, "split_title" : [ "Thinking", "in", "java", "4th" ], "title" : "Thinking in java 4th" } } ] }}