涉及到ES查询时,需要考虑索引可能不存在的情况。
RestHighLevelClient需要设置searchRequest.indicesOptions(IndicesOptions.LENIENT_EXPAND_OPEN);
STRICT_EXPAND_OPEN
主要代表如下几层意义:
1、如果是指定索引,则索引必须存在。
2、通配符匹配的范围为OPEN状态的索引。
3、如果使用通配符来查找索引,未匹配到任何索引不会抛出异常。
LENIENT_EXPAND_OPEN(项目中使用这种)
主要代表如下几层意义:
1、允许索引不存在,指定一个不存在的索引,也不会抛出异常。
2、通配符作用范围为OPEN状态的索引。
3、如果使用通配符来查找索引,未匹配到任何索引不会抛出异常。
LENIENT_EXPAND_OPEN_CLOSED;
主要代表如下几层意义:
1、如果指定索引,该索引必须存在。
2、通配符作用范围为OPEN、CLOSED状态的索引。
3、如果使用通配符来查找索引,未匹配到任何索引不会抛出异常。
STRICT_EXPAND_OPEN_CLOSED;
主要代表如下几层意义:
1、如果指定索引,该索引必须存在。
2、通配符作用范围为OPEN、CLOSED状态的索引。
3、如果使用通配符来查找索引,未匹配到任何索引不会抛出异常。
STRICT_EXPAND_OPEN_FORBID_CLOSED;
主要代表如下几层意义:
1、如果指定索引,该索引必须存在。
2、通配符作用范围为OPEN状态的索引。
3、如果使用通配符查找索引,未找到索引不会抛出异常。
4、禁止指定CLOSE状态的索引。 [6.4.0版本测试,这条规则未生效]
STRICT_SINGLE_INDEX_NO_EXPAND_FORBID_CLOSED;
主要代表如下几层意义:
1、指定的索引或别名必须存在。
2、不允许使用通配符。
3、不允许一个别名解析出多个索引的情况。