2016-08-22 60 views
1

我正在尋找和單個或一組的,人類可讀的文件中重複計數短語。我將每個文檔分解成短語/句子,並用這些短語填充一個Elasticsearch索引,每個ES文檔一個。Elastcsearch聚合(一式兩份)搜索不返回所有重複

我在我的索引中有707個文件。我知道我應該至少有21份重複文件。我的搜索正在返回19份重複的文檔。我不明白爲什麼我錯過了一些比賽。這裏是我的查詢:

 
{ 
    "size": 0, 
    "aggs": { 
     "duplicateCount": { 
      "terms": { 
       "field": "content", 
       "min_doc_count": 2 
      }, 
      "aggs": { 
       "duplicateDocuments": { 
        "top_hits": { 

        } 
       } 
      } 
     } 
    } 
} 

我的過程:

  1. 創建索引
  2. 構建批量插入數據對象
  3. 批量插入文檔轉換成指數
  4. 重新索引文件
  5. 運行重複查詢(以上)
  6. 解析結果 - SUM桶.doc_counts
  7. 刪除索引

注:由於彈性搜索將匹配的話,不是短語/句子,我MD5哈希插入前每個短語/句子到我的索引。

更多細節可以提供(我不希望我的帖子過於龐大)。

爲什麼ES沒有返回所有重複????

感謝

更新:當我創建我的索引碎片屬性設置爲1,這有助於恢復一些更多的副本,但仍然不是全部。

+1

請不要在你的問題中編輯你的答案,而是發佈一個單獨的答案。 – CodeCaster

+0

添加您的解決方案作爲答案,然後接受該答案。不要編輯標題或問題以包含解決方案。 –

回答

0

如果知道該文件的大概尺寸,加上它象下面這樣:

"aggs": { 
"productId": { 
    "terms": { 
    "field": "productId", 
    "min_doc_count": 2, 
    "size": 1000 
    } 
} 

}

請檢查這是否會解決您的問題。