欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > MySQL 與 Elasticsearch 數(shù)據(jù)不對稱問題解決辦法

MySQL 與 Elasticsearch 數(shù)據(jù)不對稱問題解決辦法

熱門標簽:怎么辦理400電話呢 電銷機器人價格多少錢一臺 百度地圖標注地方備注 地圖標注圖標素材入駐 400電話申請什么好 怎么申請400電話申請 好搜地圖標注 龍圖酒吧地圖標注 電話機器人免費嗎

MySQL 與 Elasticsearch 數(shù)據(jù)不對稱問題解決辦法

jdbc-input-plugin 只能實現(xiàn)數(shù)據(jù)庫的追加,對于 elasticsearch 增量寫入,但經(jīng)常jdbc源一端的數(shù)據(jù)庫可能會做數(shù)據(jù)庫刪除或者更新操作。這樣一來數(shù)據(jù)庫與搜索引擎的數(shù)據(jù)庫就出現(xiàn)了不對稱的情況。

當(dāng)然你如果有開發(fā)團隊可以寫程序在刪除或者更新的時候同步對搜索引擎操作。如果你沒有這個能力,可以嘗試下面的方法。

這里有一個數(shù)據(jù)表 article , mtime 字段定義了 ON UPDATE CURRENT_TIMESTAMP 所以每次更新mtime的時間都會變化

mysql> desc article;
+-------------+--------------+------+-----+--------------------------------+-------+
| Field    | Type     | Null | Key | Default            | Extra |
+-------------+--------------+------+-----+--------------------------------+-------+
| id     | int(11)   | NO  |   | 0               |    |
| title    | mediumtext  | NO  |   | NULL              |    |
| description | mediumtext  | YES |   | NULL              |    |
| author   | varchar(100) | YES |   | NULL              |    |
| source   | varchar(100) | YES |   | NULL              |    |
| content   | longtext   | YES |   | NULL              |    |
| status   | enum('Y','N')| NO  |   | 'N'              |    |
| ctime    | timestamp  | NO  |   | CURRENT_TIMESTAMP       |    |
| mtime    | timestamp  | YES |   | ON UPDATE CURRENT_TIMESTAMP  |    |
+-------------+--------------+------+-----+--------------------------------+-------+
7 rows in set (0.00 sec)

logstash 增加 mtime 的查詢規(guī)則

jdbc {
  jdbc_driver_library => "/usr/share/java/mysql-connector-java.jar"
  jdbc_driver_class => "com.mysql.jdbc.Driver"
  jdbc_connection_string => "jdbc:mysql://localhost:3306/cms"
  jdbc_user => "cms"
  jdbc_password => "password"
  schedule => "* * * * *" #定時cron的表達式,這里是每分鐘執(zhí)行一次
  statement => "select * from article where mtime > :sql_last_value"
  use_column_value => true
  tracking_column => "mtime"
  tracking_column_type => "timestamp" 
  record_last_run => true
  last_run_metadata_path => "/var/tmp/article-mtime.last"
 }

創(chuàng)建回收站表,這個事用于解決數(shù)據(jù)庫刪除,或者禁用 status = 'N' 這種情況的。

CREATE TABLE `elasticsearch_trash` (
 `id` int(11) NOT NULL,
 `ctime` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

為 article 表創(chuàng)建觸發(fā)器

CREATE DEFINER=`dba`@`%` TRIGGER `article_BEFORE_UPDATE` BEFORE UPDATE ON `article` FOR EACH ROW
BEGIN
 -- 此處的邏輯是解決文章狀態(tài)變?yōu)?N 的時候,需要將搜索引擎中對應(yīng)的數(shù)據(jù)刪除。
 IF NEW.status = 'N' THEN
 insert into elasticsearch_trash(id) values(OLD.id);
 END IF;
 -- 此處邏輯是修改狀態(tài)到 Y 的時候,方式elasticsearch_trash仍然存在該文章ID,導(dǎo)致誤刪除。所以需要刪除回收站中得回收記錄。
  IF NEW.status = 'Y' THEN
 delete from elasticsearch_trash where id = OLD.id;
 END IF;
END

CREATE DEFINER=`dba`@`%` TRIGGER `article_BEFORE_DELETE` BEFORE DELETE ON `article` FOR EACH ROW
BEGIN
 -- 此處邏輯是文章被刪除同事將改文章放入搜索引擎回收站。
 insert into elasticsearch_trash(id) values(OLD.id);
END

接下來我們需要寫一個簡單地 Shell 每分鐘運行一次,從 elasticsearch_trash 數(shù)據(jù)表中取出數(shù)據(jù),然后使用 curl 命令調(diào)用 elasticsearch restful 接口,刪除被收回的數(shù)據(jù)。

你還可以開發(fā)相關(guān)的程序,這里提供一個 Spring boot 定時任務(wù)例子。

實體

package cn.netkiller.api.domain.elasticsearch;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table
public class ElasticsearchTrash {
 @Id
 private int id;

 @Column(columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
 private Date ctime;

 public int getId() {
 return id;
 }

 public void setId(int id) {
 this.id = id;
 }

 public Date getCtime() {
 return ctime;
 }

 public void setCtime(Date ctime) {
 this.ctime = ctime;
 }

}

倉庫

package cn.netkiller.api.repository.elasticsearch;

import org.springframework.data.repository.CrudRepository;

import com.example.api.domain.elasticsearch.ElasticsearchTrash;

public interface ElasticsearchTrashRepository extends CrudRepositoryElasticsearchTrash, Integer>{


}

定時任務(wù)

package cn.netkiller.api.schedule;

import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.rest.RestStatus;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import com.example.api.domain.elasticsearch.ElasticsearchTrash;
import com.example.api.repository.elasticsearch.ElasticsearchTrashRepository;

@Component
public class ScheduledTasks {
 private static final Logger logger = LoggerFactory.getLogger(ScheduledTasks.class);

 @Autowired
 private TransportClient client;

 @Autowired
 private ElasticsearchTrashRepository alasticsearchTrashRepository;

 public ScheduledTasks() {
 }

 @Scheduled(fixedRate = 1000 * 60) // 60秒運行一次調(diào)度任務(wù)
 public void cleanTrash() {
 for (ElasticsearchTrash elasticsearchTrash : alasticsearchTrashRepository.findAll()) {
  DeleteResponse response = client.prepareDelete("information", "article", elasticsearchTrash.getId() + "").get();
  RestStatus status = response.status();
  logger.info("delete {} {}", elasticsearchTrash.getId(), status.toString());
  if (status == RestStatus.OK || status == RestStatus.NOT_FOUND) {
  alasticsearchTrashRepository.delete(elasticsearchTrash);
  }
 }
 }
}

Spring boot 啟動主程序。

package cn.netkiller.api;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;

@SpringBootApplication
@EnableScheduling
public class Application {

 public static void main(String[] args) {
 SpringApplication.run(Application.class, args);
 }
}
 

以上就是MySQL 與 Elasticsearch 數(shù)據(jù)不對稱問題解決辦法的講解,如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

您可能感興趣的文章:
  • windows下MySQL5.6版本安裝及配置過程附有截圖和詳細說明
  • Mysql字符串截取函數(shù)SUBSTRING的用法說明
  • MySQL日期數(shù)據(jù)類型、時間類型使用總結(jié)
  • MySQL創(chuàng)建用戶與授權(quán)方法
  • MySQL 的CASE WHEN 語句使用說明
  • mysql update語句的用法詳解
  • MySQL提示:The server quit without updating PID file問題的解決辦法

標簽:防疫工作 溫州 內(nèi)江 汕尾 撫順 浙江 固原 廣西

巨人網(wǎng)絡(luò)通訊聲明:本文標題《MySQL 與 Elasticsearch 數(shù)據(jù)不對稱問題解決辦法》,本文關(guān)鍵詞  MySQL,與,Elasticsearch,數(shù)據(jù),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《MySQL 與 Elasticsearch 數(shù)據(jù)不對稱問題解決辦法》相關(guān)的同類信息!
  • 本頁收集關(guān)于MySQL 與 Elasticsearch 數(shù)據(jù)不對稱問題解決辦法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    欧美一区二区视频在线观看2022 | 欧美无乱码久久久免费午夜一区 | 国产日产精品一区二区三区的介绍| 欧美日韩国产综合久久| 中文字幕佐山爱一区二区免费| 麻豆91免费看| 九色porny自拍视频| 91精品福利在线一区二区三区 | 极品人妻videosss人妻| 日韩精品一区国产麻豆| 日本一区中文字幕 | 亚洲日本成人在线观看| 成人高清免费观看| 一本大道av伊人久久综合| 国产精品嫩草久久久久| 国产成人8x视频一区二区| 日本女人性生活视频| 国产婷婷色一区二区三区| 国产一区二区0| 日本女人性生活视频| 国产精品视频yy9299一区| 国产成人精品综合在线观看| 四虎永久免费在线| 亚洲视频一区二区免费在线观看| 91尤物视频在线观看| 欧美亚州韩日在线看免费版国语版| 伊人一区二区三区| 中文字幕制服丝袜| 337p亚洲精品色噜噜| 日韩不卡手机在线v区| 久久精品国产亚洲av久| 久久影音资源网| 国产成人欧美日韩在线电影 | 国产精品一区在线| 国产男女猛烈无遮挡在线喷水| 中文字幕不卡三区| 97精品国产97久久久久久久久久久久| 欧美视频在线观看一区二区| 亚洲1区2区3区4区| 色婷婷在线影院| 欧美国产精品中文字幕| av在线不卡电影| 在线成人av影院| 久久97超碰色| 色综合一区二区| 亚洲第一搞黄网站| av黄色免费网站| 国产精品美女一区二区三区| 丰满人妻一区二区三区53视频| 欧美一区二区视频在线观看2022| 精品亚洲成a人| 午夜免费激情视频| 亚洲成人777| 蜜臀久久99精品久久久久久| 中文字幕一区二区三区四区| 在线观看一区二区三区四区| 精品国产凹凸成av人导航| 国产白丝精品91爽爽久久| 欧美视频一区二区在线观看| 美女高潮久久久| 国产黄在线免费观看| 午夜精品123| 欧美日韩中文字幕视频| 亚洲精品国产第一综合99久久| 日韩中文字幕电影| 中文字幕日本不卡| 欧美黑人欧美精品刺激| 欧美国产亚洲另类动漫| 久久久久国产免费| 国产日本欧美一区二区| 制服.丝袜.亚洲.中文.综合懂| xfplay精品久久| gogo亚洲国模私拍人体| 久久久综合精品| 久久亚洲综合色| 处破女av一区二区| 日韩欧美一级特黄在线播放| 成人精品高清在线| 日韩亚洲欧美高清| 99久久综合精品| 精品国产91乱码一区二区三区 | 最新版天堂资源在线| 久久色视频免费观看| 久久久久中文字幕亚洲精品| 国产色产综合色产在线视频| 免费观看一区二区三区| 中文字幕成人av| 9.1成人看片免费版| 亚洲人亚洲人成电影网站色| 美国美女黄色片| 偷拍一区二区三区| 色丁香久综合在线久综合在线观看| 奇米精品一区二区三区四区 | 狠狠色综合播放一区二区| 欧美日韩国产小视频在线观看| 国产老肥熟一区二区三区| 91精品国产欧美一区二区| 99久久777色| 日本一区二区三区免费乱视频| 天堂久久久久久| 亚洲一区二区中文在线| 欧美成人777| 国产麻豆91精品| 日韩精品一区二区三区视频| 好吊操视频这里只有精品| 国产精品视频免费看| 欧美人与禽zoz0善交| 免费在线观看一区二区三区| 欧美日韩国产欧美日美国产精品| 不卡一卡二卡三乱码免费网站| 精品电影一区二区| 日本黄色动态图| 亚洲国产成人tv| 欧美在线观看一二区| 成人激情动漫在线观看| 精品国产不卡一区二区三区| 少妇按摩一区二区三区| 亚洲mv在线观看| 欧美三区在线视频| 99视频精品免费视频| 国产精品美女久久久久久| 国产真人做爰视频免费| 奇米综合一区二区三区精品视频| 日韩一级在线观看| 先锋资源av在线| 丝袜美腿高跟呻吟高潮一区| 欧美久久久影院| 女性生殖扒开酷刑vk| 亚洲一级不卡视频| 欧美日韩成人在线| 人妻 日韩 欧美 综合 制服| 亚洲一区二三区| 3atv在线一区二区三区| 污片免费在线观看| 日韩国产一二三区| 日韩精品资源二区在线| 免费a级黄色片| 看片网站欧美日韩| 精品国一区二区三区| 国产一级久久久久毛片精品| 国产在线视频一区二区三区| 国产午夜精品久久| 激情五月激情综合| 国产91对白在线观看九色| 国产精品毛片无遮挡高清| 国产精品久久久久久久精| 暴力调教一区二区三区| 亚洲免费观看高清完整版在线| 日本久久一区二区三区| 99在线精品免费| 亚洲自拍欧美精品| 欧美一区二区三区男人的天堂| 成人精品在线观看视频| 久久99久久久久久久久久久| 国产欧美一区二区在线| 国产88在线观看入口| 亚洲成人福利视频| 日韩精品成人一区二区三区| 久久这里只精品最新地址| 成人在线观看高清| 99久久er热在这里只有精品15 | 色婷婷av一区二区三区软件| 国产在线观看免费播放| 日韩成人精品在线观看| 久久久99免费| 91行情网站电视在线观看高清版| 佐佐木明希电影| 精品一区二区免费在线观看| 国产精品久久久久久久久果冻传媒| 欧美无乱码久久久免费午夜一区 | 欧美xxxooo| 91色在线porny| 日本成人在线不卡视频| 国产视频一区二区在线观看| 色哦色哦哦色天天综合| 800av在线播放| 国产成人av电影在线| 亚洲午夜精品久久久久久久久| 欧美r级在线观看| 色综合天天综合狠狠| 亚洲一区二区三区综合| 国产成人亚洲综合a∨婷婷| 亚洲福中文字幕伊人影院| 久久久亚洲午夜电影| 色激情天天射综合网| 色天使在线视频| jiyouzz国产精品久久| 日本不卡的三区四区五区| 国产精品久久毛片av大全日韩| 欧美精品久久99| 欧美肥妇bbwbbw| 真人bbbbbbbbb毛片| 成人精品国产福利| 美女一区二区三区| 一区二区三区四区亚洲| 久久美女高清视频| 91精品视频网| 色国产精品一区在线观看| 337人体粉嫩噜噜噜| 国产国语老龄妇女a片|