在ElasticSearch模板上确定参数值:搜索模板

时间:2019-01-04 17:04:13

标签: elasticsearch

我有一个ElasticSearch-搜索模板,该模板传递一个字段名称来执行排序顺序。因此,如果参数名称是按名称排序,则参数日期是按年龄排序,如果性别则按性别排序。

我一直试图在搜索结束时始终将所有空值(包括空的“”字符串)放在排序字段上。

字段是

 "name": {
    "type": "keyword",
  }
  "age": {
    "type": "byte"
  },
  "gender":{
    "type":"keyword"
  }

我尝试了以下方法:

- missing: "_last"
- missing: "_first"

都不使用关键字

  • 无痛脚本编写,根据类型来增强非空字段,不幸的是,它没有设法使之生效

  • 尝试按属性类型进行匹配以增强功能,但也无法使该功能起作用

    “模板”:{     “ from”:“ {{from}}”,     “ size”:“ {{size}}”,     “排序”:[     “_得分了”,     {     “ {{sortField}}”:{     “ order”:“ {{sortOrder}}”     }     }     ],     “查询”:{     “布尔”:{     “应该”:[     {     “ constant_score”:{     “过滤器”:{     “布尔”:{     “一定不”: [     {     “比赛”: {     “ {{sortField1}}”:“”     }     }     ],     “ _name”:“非空字符串”     }     },     “提升”:1000     }     }     ],     }     }     }

预期结果:(空为空白或空白)

姓名|年龄|性别

詹姆斯| 31 |男

简|空|女

Lizie | 28 | null |

年龄顺序:


ASC:

姓名|年龄|性别

Lizie | 28 | null |

詹姆斯| 31 |男

简|空|女


DESC:

姓名|年龄|性别

詹姆斯| 31 |男

Lizie | 28 | null |

简|空|女


性别顺序:

Asc:

姓名|年龄|性别

简|空|女

詹姆斯| 31 |男

Lizie | 28 | null |


描述: 名称|年龄|性别

詹姆斯| 31 |男

简|空|女

Lizie | 28 | null |

所以我的问题是我如何才能知道与值sortField一起传递的字段名称Name,Age或Gender。手动匹配正确的提升规则?

0 个答案:

没有答案