2012-11-28 20 views
11

インデックスクエリを実行するのにどのURLを使用しますか?ElasticSearchでインデックスクエリを実行するにはどうすればよいですか?

私は以下を参照してください。でも、それを行うためのURLは何ですか? http://www.elasticsearch.org/guide/reference/query-dsl/indices-query.html

私は弾性検索に照会する方法を知っている唯一の方法は、URIである:

http://localhost:9200/myindex 

私が午前の問題は、私は別の文書と複数のインデックス myindex1 myindex2 myindex3

を持っています

と私は、myindex1とmyindex2(または単にmyindex2とmyindex3)に対して任意のクエリを実行できるようにしたいです

これは可能ですか?

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

は、サンプルURLの例を示してください、と私はアイデアを得ることができ、可能な場合、何がリクエストのボディに行く:また、あなたはmatch_allクエリまたは規約クエリのようなQueryDSLとインデックスクエリを組み合わせることができます。

答えて

7

あなたはこの

POST myindex1/_search 
{ 
"query": {"match_all": {}} 
} 
16

あなたは試みることができる:

curl http://localhost:9200/myindex1,myindex2/_search?q=* 

それとも

curl -XPOST http://localhost:9200/myindex1,myindex2/_search -d '{ 
    // your query here 
}' 

を、それはあなたが探しているものですか?

6

これを行うには、いくつかの方法があります。

1)myindex1myindex2のインデックスクエリでは、titleフィールドの用語クエリを使用します。

curl -XPOST http://localhost:9200/_search -d '{ 
    "query": { 
    "indices": { 
     "indices": [ 
     "myindex1", 
     "myindex2" 
     ], 
     "query": { 
     "terms": { 
      "title": [ 
      "foo", 
      "bar" 
      ] 
     } 
     } 
    } 
    } 
}' 

2)URIで検索するインデックスを指定することによって(厳密な用語クエリと同じ)

curl -XPOST http://localhost:9200/myindex1,myindex2/_search -d '{ 
    "query": { 
    "terms": { 
     "title": [ 
     "cookies", 
     "cake" 
     ] 
    } 
    } 
}' 

そして、はい、次の2つの例のいずれかで(実際に、または任意の他のクエリhere)match_allクエリの条件クエリを入れ替えることができます。 2番目の例でmatch_allクエリを実行する方法は次のとおりです。

curl -XPOST http://localhost:9200/myindex1,myindex2/_search -d '{ 
    "query": { 
    "match_all": {} 
    } 
}' 
+1

インデックスのように書くことができるプラグイン感覚を使用している場合は、次のクエリはElasticSearch 5に廃止されました –

1

私はelastic-headプラグインをインストールすることをお勧めします。そのインターフェイスの3番目のタブにはクエリビルダがあります。インデックスを選択してクエリを作成し、それが生成するdslクエリを調べることができます。これは、DSLクエリ構文のスピードアップを迅速に行う方法です。

http://mobz.github.io/elasticsearch-head/

関連する問題