12

ドキュメントが非常に明確に答えていないelasticsearchに関する非常に基本的な質問です(それらは多くの高度な詳細に入るように見えますが、基本的なものを見逃しているためです!)。

例: 範囲クエリ

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

範囲を実行する方法がわかりません。検索エンドポイント経由ですか?

もしそうなら、クエリ文字列を介してそれを行う方法は? つまり、POST ではなく GET を実行したいのです (挿入/変更ではなくクエリであるため)。ただし、GET 要求のドキュメントには、Range サンプルのように JSON を使用する方法が記載されていません。

http://www.elasticsearch.org/guide/reference/api/search/uri-request.html

私は何が欠けていますか?

ありがとう

4

3 に答える 3

8

インデックスがあるとしましょう

curl -XPUT localhost:9200/test

そしていくつかの文書

curl -XPUT localhost:9200/test/range/1 -d '{"age": 9}'
curl -XPUT localhost:9200/test/range/2 -d '{"age": 12}'
curl -XPUT localhost:9200/test/range/3 -d '{"age": 16}'

これで、特定の範囲内でこれらのドキュメントをクエリできます

curl -XGET 'http://localhost:9200/test/range/_search?pretty=true' -d '
{
    "query" : {
        "range" : {
            "age" : { 
                "from" : "10", 
                "to" : "20", 
                "include_lower" : true,
                "include_upper": true
            }
        }
    }
}
'

これにより、ドキュメント 2 と 3 が返されます。

ただし、 URI requestを介してこの種の複雑なクエリを実行する方法があるかどうかはわかりません。

編集: karmi のおかげで、ここに JSON 要求のないソリューションがあります:

curl -XGET --globoff 'localhost:9200/test/range/_search?q=age:["10"+TO+"20"]&pretty=true'

于 2013-02-12T18:20:58.453 に答える
0

@javanna のおかげで自分に返信しています。

検索ドキュメントの RequestBody セクション:

http://www.elasticsearch.org/guide/reference/api/search/request-body.html

最後に、次のように述べています。

検索リクエストの残りの部分は、本文自体で渡す必要があります。本文のコンテンツは、 sourceという名前の REST パラメーターとして渡すこともできます。

sourceしたがって、 json を渡すには、属性を持つ検索エンドポイントを使用する必要があると思います。

于 2013-02-16T03:20:26.827 に答える