首页 文章

弹性搜索数据在每次重启时增加和重复

提问于
浏览
2

我在Windows 7上使用带有angularjs和oracle的elasticsearch . 它的工作越来越精细(感谢stackoverflower帮助) . 我有弹性搜索的问题:我的文档中的元素数量正在增加,我不知道为什么/如何 . 我的弹性搜索索引的oracle表包含12010个元素,现在我在弹性文档中有84070个元素(经常由curl _count检查):所以它现在重复数据7次 . 几天前我重新索引了表,但之前删除了elasticsearch“data”文件夹 .

每次重启windows时数据似乎都会增加 .

感谢帮助 .

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


我这是第一次这样做:


创建索引

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 / samples / _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

1 回答

  • 3

    感谢Konstantin V. Salikhov .

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

    希望这有助于其他

相关问题