接着前面对项目的分词索引开发,下面开始做详情页的开发。主表novel表,详情页的数据表为novel_detail表
    novel_detail表格式如下:

    1. mysql> desc novel_detail;
    2. +--------------+--------------+------+-----+---------+----------------+
    3. | Field | Type | Null | Key | Default | Extra |
    4. +--------------+--------------+------+-----+---------+----------------+
    5. | id | int(11) | NO | PRI | NULL | auto_increment |
    6. | author_name | varchar(255) | NO | | NULL | |
    7. | novel_name | varchar(255) | NO | | NULL | |
    8. | chapter_name | varchar(255) | NO | | NULL | |
    9. | chapter_url | varchar(255) | NO | | NULL | |
    10. +--------------+--------------+------+-----+---------+----------------+

    由于这个表的数据量太大,我只取的20万的数据,以便于logstash导入到es中时间更短

    1. create table novel_detail_test as select * from novel_detail limit 200000;

    novel_detail原表是没有novel_id这个字段的,为了好与novel表做关联,我添加了一个novel_id这个字段

    1. # 添加novel_id
    2. alter table novel_detail_test add novel_id int;
    3. # 导入数据
    4. update novel_detail_test b set b.novel_id = (select a.id from novel_test a where a.name = b.novel_name);

    20万的数据差不多导入了14分钟
    image.png
    现在的novel_detail_test格式如下:
    image.png
    下面需要将novel_detail_test的数据通过logstash导入到es中

    1. # 进入root
    2. su
    3. cd /etc/logstash/conf.d
    4. vim novel_detail.conf
    1. input {
    2. stdin {}
    3. jdbc {
    4. jdbc_driver_library => "/opt/shell/mysql-connector-java-5.1.48-bin.jar"
    5. jdbc_driver_class => "com.mysql.jdbc.Driver"
    6. jdbc_connection_string => "jdbc:mysql://bigdata-pro-m04:3306/db_novel"
    7. jdbc_user => "root"
    8. jdbc_password => "199911"
    9. statement => "SELECT id,novel_id,novel_name,chapter_name from novel_detail_test"
    10. jdbc_validate_connection => "true"
    11. jdbc_validation_timeout => "3600"
    12. connection_retry_attempts => "5"
    13. jdbc_paging_enabled => "true"
    14. jdbc_page_size => "1000"
    15. sql_log_level => "warn"
    16. lowercase_column_names => "false"
    17. }
    18. }
    19. filter {
    20. json {
    21. source => "message"
    22. remove_field => ["message"]
    23. }
    24. }
    25. output {
    26. elasticsearch {
    27. hosts => "bigdata-pro-m04:9200"
    28. index => "novel_detail"
    29. document_id => "%{id}"
    30. }
    31. stdout {
    32. codec => "json_lines"
    33. }
    34. }
    1. cd /usr/share/logstash
    2. bin/logstash -f /etc/logstash/conf.d/novel_detail.conf

    下面开始开发代码:
    image.png
    详情页搜索效果:
    image.png
    image.png
    为了能点进每个目录去看,我们需要启动hbase,因为小说内容的链接是存在hbase中的
    小说详情页功能开发:
    image.png
    image.png
    详情页效果:
    image.png