2016-03-21 14 views
1

, Elasticsearch içinde var. type2 içinde bulunmayan type1 tüm kayıtları sorgulamak istiyorum.Diğer türlerde bulunmayan bir türden yapılan Elasticsearch kayıtları

SQL eşdeğeri;

SELECT * FROM index/type1 AS t1 WHERE t1.uid NOT IN (SELECT t2.uid FROM index/type2 AS t2) 

Bu konuda nasıl gidebileceğime dair herhangi bir öneriniz var mı? Elasticsearch-2.2.0 (Java API) kullanıyorum. Teşekkür ederim!

+0

ne kadar doküman her tür var? Her türde – Val

+0

~ 1 milyon. – y2p

+0

Ben aynı soruna sahibim, Elasticsearch ile bu mümkün olmazsa üzücü olurdu. Belki de ["Daha fazlası gibi" API] (https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-mlt-query.html) burada yardımcı olabilir mi? Ancak, henüz bir çözüm bulamadım ... – Dirk

cevap

0

Yapmaya çalıştığınız şey, relational store olmadığı için kesinlikle Elasticsearch ile mümkün değildir.
açıkça terimleri geçen önlemek için bir olasılığı vardır ancak bazı belgenin (Terms lookup) bazı alanındaki mevcut olmalıdır: (yak.)

{ 
    "bool": { 
    "must_not": { 
     "term": { 
     "uid": { 
      "index": "document-index", 
      "type": "document-type", 
      "id": "document-id", 
      "path": "path-to-the-array-property-containing-the-terms" 
     } 
     } 
    } 
    } 
}