0

キーとしてazを持つドキュメントのセットがあるとしましょう。そして、私はこの用語のクエリを起動しています:

curl -X GET localhost:9200/memphis/pincode/_search?pretty=json -d '{"query":{"term":{"a":"abcd", "b":"wxyz"}}}'

これにより、「a」の値がabcdで、「b」の値がwxyzであるすべてのドキュメントが返されます。しかし、('a'の値はabcdであり、'b'の値はwxyzである)または('a'の値はabcdであり、タグ'b'はそうではない)の見返りにそのようなすべてのドキュメントが必要な場合はどうなりますか? tが存在します)または(タグaが存在せず、「b」の値はwxyzです)。

これは可能ですか。

私はルビーで働いており、elasticsearchに接続するために「Tire」gemを使用しています。したがって、タイヤに対応する構文も取得すると、さらに役立ちます。

前もって感謝します

-アジタブ

4

2 に答える 2

0

私は他のフォーラムで答えを得ました。完全を期すためにここに置く:

http://www.elasticsearch.org/guide/reference/query-dsl/missing-filter.html

{
"query" : {
    "constant_score" : {
        "filter" : {
            "must" : [
                {
                    "should": [
                        {
                            "term": {"a" : "abcd"}
                        },
                        {
                            "missing": {"field": "a"}
                        }
                    ]
                },
                {
                    "should": [
                        {
                            "term": {"b" : "wxyz"}
                        },
                        {
                            "missing": {"field": "b"}
                        }
                    ]
                },

            ]
        }
    }
}
}
于 2012-11-07T05:50:16.147 に答える
0

should 句を使用して Bool クエリで 2 つのクエリをラップできます。

つまり、2 つのクエリにヒットしたドキュメントのスコアが高くなります。

http://www.elasticsearch.org/guide/reference/query-dsl/bool-query.htmlを参照して ください

于 2012-11-06T07:11:04.153 に答える