搜索或过滤多值字段

时间:2017-06-06 07:10:36

标签: elasticsearch logstash

我有一个MySQL数据库,其中包含两个重要字段 title age_range

对于为年龄在45到60岁之间的用户设计的文档,该表保存了此'45;60'文档,对于年龄介于18到70岁之间的用户,'18;70'等等...

现在,我想在 age_range 字段的过滤器'test'上使用标题字段触发查询'18;50',该字段将返回全部匹配'test'的文档与此区间中包含的年龄范围字段,例如上述2个案例。

例如,我使用Logstash索引我的数据。

我怎样才能做到这一点?

使用logstash索引数据时要做的任何处理吗?

使用ES分析器进行索引时使用的任何过滤器,标记生成器?

提前谢谢

1 个答案:

答案 0 :(得分:0)

您可以使用grok过滤器将数据拆分为两个字段。要将数据发送到Elasticsearch,您可以首先使用logstash jdbc_streaming输入和elasticsearch输出。您可以按如下方式配置输入:

input {
    jdbc_streaming {
        # Configuration of jdbc 
        # https://www.elastic.co/guide/en/logstash/current/plugins-filters-jdbc_streaming.html
    }
}

filter {
    # Split the field as separeted two fields
    grok {
        match => { "age_range" => "%{NUMBER:age_range_top};%{NUMBER:age_range_bottom}" }
    }
}

output {
    elasticsearch {
        # elasticsearch output configuration
    }
}

分析取决于您的搜索方法。您如何搜索这些字段?如果您只想进行范围过滤,则范围字段是必需的默认字段。但你应该做一些关于title的工作。例如,您可以按照this示例来处理自动填充。