regex - 使用非法字符启用Elasticsearch索引名称

标签 regex elasticsearch

我正在尝试使用xxx/yyyxxx yyy之类的字符串创建elasticsearch索引,但由于它们包含非法字符(/),因此不允许使用这些索引。这些名称很大程度上是用户创建的,不受我的控制,因此,为了适应elasticsearch的要求而更改名称实际上不是一个选择。

这是确切的错误消息:

[Error: InvalidIndexNameException[[XXX\%FFZZZ] Invalid index name [XXX\%FFZZZ], must not contain the following characters [\, /, *, ?, ", <, >, |,  , ,]]]

无论如何,我已经尝试对字符串进行URL编码,但这是行不通的,因为其中包含不允许使用的大写字母,并且由于在非法字符列表中,反斜杠转义是不可能的。

是否有解决此问题的常规方法,还是我必须提出一些粗略的序列化和/或哈希方案来解决此问题?

最佳答案

嗯,让用户可以控制诸如索引名之类的事情正在引起麻烦:)

但是,如果您愿意走这条路,我建议您只是删除所有不是字母数字的字符,并在处理过程中将结果小写。

在PHP中将是:

$index = preg_replace("/[^a-z0-9]+/i", "", $index);

在Java中:
index = index.replace("/[^a-z0-9]+/i", "");

用Javascript:
index = index.replace(/[^a-z0-9]+/i, "");

关于regex - 使用非法字符启用Elasticsearch索引名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34079644/

相关文章:

elasticsearch - 如何在Logstash中将Groovy脚本与参数一起使用

javascript - 在 witt 的最后...... Javascript 不会取代 '\n' !

PHP正则表达式括号内引号外

regex - 多次转换sed中的匹配组

javascript - 如何使用elastic.js获取 Elasticsearch 上的所有索引?

elasticsearch - Kibana报告字段冲突,我该如何解决?

java - 自定义映射 Spring Data ElasticSearch

python - 如何替换字符串中的单个斜杠 '/',不包括 '://' 模式中的斜杠字符

c - 首先获取一个带空格的字符串,然后在制表符之后获取另一个字符串

csv - 将 csv 导入 elasticsearch