我希望找到按ID过滤的所有项目都匹配一些正则表达式,如
*TEST123* //pattern for regexp
所以预期的结果是项目
ATEST123001
ATEST123002
ATEST123003
TTTTEST123001
...
我可以创建一些扫描完整存储空间并在日志文件中保存ID的脚本,以后可以查看。但我想找到一些更好的解决方案
更新 我试过了
"query" : { "match_all" : { }, "filtered" : { "filter" : { "regexp": { "id":".test123." } } } }, }
我收到了
//嵌套:ElasticsearchParseException [预期的字段名称但得到了START_OBJECT \"过滤了\"]
当我尝试
时{
"regexp": {
"id": "test123"
}
}
//解析失败[没有解析元素[regexp]]]
ES 1.7.4和Lucene 4.10.4
答案 0 :(得分:1)
您可以使用正则表达式查询。 regexp查询允许您使用正则表达式术语查询。
价: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-regexp-query.html
示例正则表达式查询:
{
"regexp":{
"id": "*test123*"
}
}
更新: 在2.0中,regexp过滤器已被regexp查询取代。
{
"query": {
"filtered": {
"filter": {
"regexp":{
"id":".*TEST123.*"
}
}
}
}
}
答案 1 :(得分:0)
您可以尝试Query String。
{
"query": {
"query_string": {
"default_field": "if",
"query": "*test123*"
}
}
}