2011-11-29 10 views
7

私はこのようになりますクエリを持っている:クエリDSL - フィルタの誤解

{ 
    "query": { 
    "constant_score": 
     "filter": { 
     "missing": { 
      "field": "parent_id" 
     } 
     } 
    } 
}, 
"size": limit, 
"from": offset 
} 

私のタイプはparent_idwall_idフィールドを持っています。 parent_idがなく、wall_idがないすべてのタイプを取得できるように、このクエリを変更するにはどうすればよいですか?私はそれをドキュメントから解読することはできません。何か助けてくれてありがとう!

UPDATE

私は作品次のクエリを持っていますが、私はタイトルをキャッチオールqueryを好きではありません。 「キャッチオールを追加することなく、これを行う方法はありますが、ほとんどそこにいる

{ 
    "query":{ 
    "filtered":{ 
    "query":{ 
     "field":{ "title":"*" } 
    }, 
    "filter":{ 
     "and":{ 
      "filters":[ 
       { 
       "missing":{ "field":"parent_id" } 
       }, 
       { 
       "missing":{ "field":"wall_id" } 
       } 
      ] 
     } 
    } 
    } 
}, "size":10, "from":0 
} 

答えて

7

、あなたは自分のconstant_scoreクエリの下andフィルタを使用する必要があります?

{ 
    "query": { 
    "constant_score": { 
     "filter": { 
     "and":[ 
      { "missing":{ "field":"parent_id" }}, 
      { "missing":{ "field":"wall_id" }} 
     ] 
     } 
    } 
    } 
} 
+0

うわー、それはです"フィルタ"プロパティの周りに中括弧を追加する必要がありましたが、動作します。ありがとうございました。この形式は非常に厄介です、elasticsearch.orgのドキュメントを除いて良い文書のソースはありますか? – swatkins

+0

おっと、ありがとう私が知っている他のリソースはありませんが、私が発表したプレゼンテーションのスライドをチェックしてみてください。http://www.elasticsearch.org/tutorials/2011/08/28/ query-dsl-described.html また、私はあなたがESと話すためにどのクライアントを使用しているのかわかりませんが、Perlに精通している場合は、よりコンパクトなPerlであるSearchBuilderを見てください'標準のESクエリdslに翻訳されるish構文:https://metacpan.org/module/ElasticSearch::SearchBuilder – DrTech

+0

私はnode.jsとelasticsearchclientモジュールを使用しています。それは大きな助けです。ありがとう! – swatkins