Elasticsearch搜索oracle表数据

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中实现信息检索。
后续继续分享如何实现增量更新。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值