我有一个MySQL数据库,其中包含两个重要字段 title 和 age_range 。
对于为年龄在45到60岁之间的用户设计的文档,该表保存了此'45;60'
文档,对于年龄介于18到70岁之间的用户,'18;70'
等等...
现在,我想在 age_range 字段的过滤器'test'
上使用标题字段触发查询'18;50'
,该字段将返回全部匹配'test'
的文档与此区间中包含的年龄范围字段,例如上述2个案例。
例如,我使用Logstash索引我的数据。
我怎样才能做到这一点?
使用logstash索引数据时要做的任何处理吗?
使用ES分析器进行索引时使用的任何过滤器,标记生成器?
提前谢谢
答案 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示例来处理自动填充。