Elasticsearch - 针对未分析字段的正则表达式查询的行为

时间:2015-12-02 23:07:18

标签: regex elasticsearch

针对未分析字段的正则表达式查询的默认行为是什么?另外,处理.raw字段的答案是否相同?

在我阅读完所有内容之后,我理解以下内容。 1. RegExp查询将适用于已分析和未分析的字段。 2.正则表达式查询应该适用于整个短语,而不仅仅是匹配非分析字段中的单个标记。 不过这是问题所在。我实际上无法让这个工作。我已在多个领域尝试过它。

我正在使用的设置是库存elk安装,我正在使用基本解析器将pfsense和snort日志转储到它中。我目前正在使用Kibana 4.3和ES 2.1

我做了一个查询来查看其中一个字段的映射,它表明它没有被分析,但正则表达式在整个字段中都不起作用。

"description": {
  "type": "string",
  "norms": {
    "enabled": false
  },
  "fields": {
    "raw": {
      "type": "string",
      "index": "not_analyzed",
      "ignore_above": 256
    }
  }
}

我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

  • 如果字段未分析,则该字段只是一个标记。
  • 处理.raw字段时的答案相同,至少在我的工作中。
  • 您可以使用groovy脚本:

    matcher =(doc [fields.raw] .value =〜/ $ {pattern} /);
    if(matcher.matches()){
        matcher.group(matchname)}

你可以在params中传递模式和matchname。

insert into top(top_name) values ('first_top'); insert into mid(top_id, mid_name) select currval('top_top_id_seq'), 'first_mid_for_first_top'; insert into bot(mid_id, bot_name) select currval('mid_mid_id_seq'), 'first_bot_for_first_mid'; insert into bot(mid_id, bot_name) select currval('mid_mid_id_seq'), 'second_bot_for_first_mid'; insert into mid(top_id, mid_name) select currval('top_top_id_seq'), 'second_mid_for_first_top'; insert into top(top_name) values ('second_top'); insert into mid(top_id, mid_name) select currval('top_top_id_seq'), 'first_mid_for_second_top'; insert into bot(mid_id, bot_name) select currval('mid_mid_id_seq'), 'first_bot_for_thir_mid'; 的含义是什么?如果你的情况更复杂,也许你可以制作一个原生的java插件。

更新

tried it across multiple fields.