当前位置: 首页 > 面试题库 >

elasticsearch数据增加并在每次重新启动时重复

别帅
2023-03-14
问题内容

我在Windows
7上将Elasticsearch与angularjs和oracle一起使用,它的工作原理越来越好(感谢stackoverflower帮助)。我对Elasticsearch有一个问题:我文档中的元素数量正在增加,我不知道为什么/如何做。我的由Elasticsearch索引的oracle表包含12010个元素,现在我在弹性文档中得到了84070个元素(通常由curl
_count检查):因此它现在将数据重复了7次。我几天前重新索引了表格,但之前删除了elasticsearch“ data”文件夹。

每次我重新启动Windows,数据似乎都会增加。

感谢帮助。

这是我安装和索引数据的方式:

我只是第一次这样做:

  • 解压文件夹中的弹性文件:D:\ work \ elasticsearch-1.3.1 \
  • 安装Web界面:> plugin -install mobz / elasticsearch-head
  • install jdbc:>插件–install jdbc –url http://xbib.org/repository/org/xbib/elasticsearch/plugin/elasticsearch-river-jdbc/1.3.0.0/elasticsearch-river-jdbc-1.3.0.0- plugin.zip
  • 复制“ ojdbc6-11.2.0.3.jar”到“ D:\ work \ elasticsearch-1.3.1 \ plugins \ jdbc”
  • service.bat安装
  • service.bat开始

建立索引

curl -XPOST 'localhost:9200/donnees'

映射:

curl -XPUT 'localhost:9200/donnees/specimens/_mapping' -d '{
"specimens" : {
    "_all" : {"enabled" : true},
    "_index" : {"enabled" : true},
    "_id" : {"index": "not_analyzed", "store" : false},
    "properties" : {
        "O_OCCURRENCEID"                                : {"type" : "string",   "store" : "no","index": "not_analyzed"  } ,
            .... 
        "I_INSTITUTIONCODE"                             : {"type" : "string",   "store" : "yes","index": "analyzed" } 
    }
}}'

查询oracle和索引数据:

curl -XPUT 'localhost:9200/_river/donnees_s/_meta' -d '{
 "type" : "jdbc",
 "jdbc" : {
    "index" : "donnees",
    "type" : "specimens",
    "url" : "jdbc:oracle:thin:@localhost:1523:recolnat",
     "user" : "user",
     "password" : "password",
     "sql" : "select * from all_specimens_data"
   }
}'

(这是正确的吗?如果我将“ curl -XPUT’localhost:9200 / donnees / specimens / _meta”替换为“
curl -XPUT’localhost:9200 / _river / donnees_s / _meta’”,则无法使用查询)

测试:

curl -XGET 'http://localhost:9200/donnees/specimens/_count?q=*'
    => 12010
curl -XGET 'http://localhost:9200/donnees/specimens/_search?q=P00009359'
    => return data ok

问题答案:

已解决,感谢Konstantin V. Salikhov。

每次elasticsearch服务启动时,它都会使用提供给_river的sql查询数据库并获取数据(请参见前面的“查询oracle和索引数据:”)。如果数据中没有“
_id”列,则_river无法确定其已加载了哪些记录,并且每次都重复数据。为了避免重复,我在数据库中编辑了我的“
all_specimens_data”表(实际上是避免修改数据库的视图),并将“ O_OCCURRENCEID”重命名为“ _id”,“
O_OCCURRENCEID”是我的主键UUID。

希望这对其他人有帮助



 类似资料:
  • 这是我的代码: 我想滚动我的卷轴,但不能,因为#refresh重新加载每3000。有人知道如何解决这个问题吗?

  • 我正在开发一个。能让它一变就重启吗?我正在Coffeescript中开发它。是否可以监视以便在保存更改时重新启动?

  • 我使用的是0.10.1.1 API的高级使用者。 奇怪的是,当我关闭应用程序并重新启动它时,偏移量比上次提交的偏移量大一点,我找不到原因。 我在代码中只有一个提交点。 一个分区的示例: 关机前偏移量:3107169023 分区分配时的偏移量:3107180350

  • 问题内容: 这是很尴尬的,因为elasticsearch的全部目的是搜索,但是我的某种方式已经失去了搜索的能力。 我的配置 要点: 我在负载均衡器下获得了2个Elasticsearch实例。 我有3个配置了副本集的MongoDB实例。 我已经安装了river(不知道它是否与它有关),这一步:https : //github.com/richardwilly98/elasticsearch-rive

  • 嗨,我从以下网站获得了倒计时代码: https://codepen.io/SitePoint/pen/MwNPVq, 并已修改为: 我所做的更改是,我检查了分钟和秒是否都为0,然后变量“deadline”应该用新时间更新。倒计时计时器工作正常,但当它达到0:0时,它进入该功能,一切停止。

  • 每次我执行INSERT或UPSERT(ON CONFLICT UPDATE)时,每个表上的增量列都会增加之前的更新数量。 例如,如果我有这张表: 然后运行这些查询: 这是一个相当大的问题。我们运行的脚本每天处理100000个通知。这会在每一次插入之间产生大约10000行的间隙,所以我们可能从100行开始,但当我们达到1000行时,最后一行的主键ID值会自动增加到100000以上。 如果这种情况继续