2016-03-21 10 views
1

1 index2 typesで、Elasticsearchにあります。 type2に存在しないtype1のすべてのレコードを照会したいとします。他のタイプに存在しないタイプの弾性検索レコード

相当するSQLは次のようになります。

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

どのように私はこれについて行くことができますか?私はelasticsearch-2.2.0(Java API)を使用しています。ありがとうございました!

+0

どのように多くの文書は、各タイプでなければなりませんか?それぞれのタイプで – Val

+0

〜100万。 – y2p

+0

私はまったく同じ問題を抱えていますが、これはElasticsearchではまったく不可能であれば悲しいでしょう。おそらく、["もっとよく似た" API](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-mlt-query.html)はここで助けになるでしょうか?しかし、私はまだ解決策を考え出すことができませんでした... – Dirk

答えて

0

relational storeではないので、あなたがしようとしていることは確かにElasticsearchでは不可能です。
明示的用語を渡す避けるために可能性がありますが、彼らはいくつかの文書(Terms lookup)のいくつかの分野に存在しなければならない:(約)

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