如何在ElasticSearch字段名称中使用regexp查询过滤器?

时间:2018-03-09 14:32:04

标签: elasticsearch

对于下面给出的ElasticSearch索引的测试数据,我们如何消除包含UUID或任何正则表达式的字段名称?

{
  "_index": "twitter",
  "_type": "test_data",
  "_id": "05ed7d0d-ec9e-4e48-a5a3-cdef11e7be28",
  "_score": 8.843938,
  "_source": {
    "test_data-created_time": 1485858118,
    "test_data-status": 1,
    "cluster-05ed7d0d-ec9e-4e48-a5a3-cdef11e7be28": "ElasticSearch"
  }
}

我可以使用以下查询来实现此要求,但是有许多字段将UUID作为字段名称本身的一部分进行匹配。任何人都对如何优化有更好的想法?

GET /twitter/test_data/_search
{
  "_source": {
    "excludes": [
    "cluster-05ed7d0d-ec9e-4e48-a5a3-cdef11e7be28"
    ]
  }
}

1 个答案:

答案 0 :(得分:0)

不知道是否有办法排除通配符以外的模式。如果所有UUID字段都具有类似特定前缀的模式,例如群集,则可以使用cluster-*。否则,如果不与其他领域发生冲突,这样的事情就可以发挥作用:

"_source": {
    "excludes": ["*-*-*-*-*"]}

虽然这不是一个非常干净的解决方案。