Elasticsearch搜索oracle表数据
本文介绍如何使用logstash把oracle数据导入至elasticsearch中实现信息检索。
定义索引及映射
首先根据oracle表定义Elasticsearch索引和映射:
PUT leg_info
{
"settings" : {
"index" : {
"number_of_shards" : 1,
"number_of_replicas" : 1
}
},
"mappings" : {
"properties" : {
"comp_name" : {
"type" : "text",
"analyzer": "hanlp_index"
},
"comp_type" : {
"type" : "keyword",
"null_value" : ""
},
"unified_code" : {
"type" : "keyword",
"null_value" : ""
},
"person_id" : {
"type" : "keyword"
},
"update_date" :{
"type" : "date"
}
}
}
}
这里定义comp_name字段类型为text,使用hanlp_index实现中文分词,实现全文检索。
## 导入法人基础信息
在数据库测试查询语句,即抽取数据语句:
select comp_name,unified_code,id as person_id from leg_info
定义logstash配置文件: oracle.logstash.conf
input {
jdbc {
jdbc_driver_library => "config.d/ojdbc5.jar"
jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"
jdbc_connection_string => "jdbc:oracle:thin:@192.168.0.192:1521:orcl"
jdbc_user => "testuser"
jdbc_password => "yourpassword"
jdbc_paging_enabled => "true"
statement => "select comp_name,comp_type,unified_code,org_inst_code,reg_no,reg_date,comp_address,id as person_id from leg_info"
}
}
output {
elasticsearch {
index => "leg_base_info"
document_id=> "%{person_id}"
hosts => ["http://localhost:9200"]
}
}
注意jdbc_driver_class的值需要使用Java:开头。jdbc_driver_library指定jar包位置,可以是绝对路径或相对路径。
运行logstash导入数据。
./bin/logstash -f ./config.d/oracle.logstash.conf
数据如预想的情况一样,完全进入Elasticsearch中。下面通过在Elasticsearch中检索进行验证。
搜索法人基本信息
- 查询数量是否一致:
GET /leg_info/_count
- 查询关键字
查询名称包含“北京”的公司信息:
GET /leg_info/_search
{
"query": {
"match": {
"comp_name": "北京"
}
}
}
- 完全匹配查询
查询工商注册号为"411321607000034"的记录:
GET /leg_base_info/_search
{
"query": {
"term": {
"reg_no": {
"value": "411321607000034"
}
}
}
}
总结
本文介绍了logstash的使用。通过在elasticsearch中定义索引及映射,通过logstash把oracle中的数据导入至elasticsearch中实现信息检索。
后续继续分享如何实现增量更新。
本文参考链接:https://blog.csdn.net/neweastsun/article/details/96581236