Skip to main content
 首页 » 编程设计

Elasticsearch搜索oracle表数据

2022年07月19日163jpfss

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