2015-06-01 22 views
7

Birden çok yinelenen giriş içeren bir dizinim var. Farklı kimliklere sahipler, ancak diğer alanların özdeş içeriği var. çiftleri çıkardıktan sonraElasticsearch: Dizindeki kopyaları kaldırın

{id: 1, content: 'content1'} 
{id: 2, content: 'content1'} 
{id: 3, content: 'content2'} 
{id: 4, content: 'content2'} 

: Örneğin

{id: 1, content: 'content1'} 
{id: 3, content: 'content2'} 

tüm çiftleri silmek ve elle tüm girişleri karşılaştırmadan sadece bir ayrı girişi tutmak için bir yolu var mı?

+0

. Bu, içerik: "content1" anlamına gelir, her zaman aynı kimlik –

+0

olmalıdır Ama bu benim için geçerli değil. Verilen bir endeksle çalışıyorum. Bu endekste aynı içeriği tutan çoklu ayrı girişler vardır. Bu nedenle bu kopyaları kaldırmak istiyorum. – fwind

+0

İçeriğiniz nasıl eşlenir? Bu bir 'string'' '' '' '' 'not_analyzed''' analiz edildi? – Val

cevap

2

Rayları kullanıyorum ve gerekiyorsa, FORCE=y komutuyla bir şeyleri içe aktaracağım, bu dizin ve tür için her şeyi kaldırır ve yeniden dizine ekler ... ancak ortamın ES içinde çalıştığından emin değilsiniz. Veri kaynağından (yani Veritabanından) aktardığınız veri kaynağının yinelenen kayıtları var mı? İlk önce veri kaynağının düzeltilip düzeltilemeyeceğini, bunun mümkün olduğunu ve her şeyi yeniden indeksleyeceğinizi tahmin ediyorum; Aksi takdirde, her kayıt için yalnızca yinelenen öğelerden birini endeksleyen özel bir içe aktarma yöntemi oluşturmayı deneyebilirsiniz.

Ayrıca, bunun yinelenen girişleri kaldırmak istediğinizle uyumlu olmadığını biliyorum, ancak aramanızı yalnızca en son "timestamp" tarafından geri döndürmek üzere yinelenen kimliklerden birini döndürmek için özelleştirebilirsiniz. Yinelenen verileri indeksleme ve içerik alanınıza göre gruplandırma - bkz. this post helps. Bu, dizininizdeki yinelenen kayıtları tutmaya devam etse bile, en azından arama sonuçlarında görünmezler.

Ben de hem bu bulundu:

Elasticsearch delete duplicates Sana bu seçeneklerden herhangi çalışmak olmadığını görmek için ya da en azından geçici bir düzeltme olabilir birçok olası senaryolar düşünme çalıştı. Özgüllüğü sağlayan kendi kimliğinizi kullanarak