カウントAPI

検索クエリの一致数を取得します。

Python

  1. resp = client.count(
  2. index="my-index-000001",
  3. q="user:kimchy",
  4. )
  5. print(resp)

Ruby

  1. response = client.count(
  2. index: 'my-index-000001',
  3. q: 'user:kimchy'
  4. )
  5. puts response

Js

  1. const response = await client.count({
  2. index: "my-index-000001",
  3. q: "user:kimchy",
  4. });
  5. console.log(response);

コンソール

  1. GET /my-index-000001/_count?q=user:kimchy

ボディに送信されるクエリは、検索APIと同様に、queryキー内にネストされている必要があります。

リクエスト

GET /<target>/_count

前提条件

  • Elasticsearchのセキュリティ機能が有効になっている場合、ターゲットデータストリーム、インデックス、またはエイリアスに対してread インデックス権限を持っている必要があります。

説明

カウントAPIを使用すると、クエリを実行し、そのクエリに対する一致数を取得できます。クエリは、パラメータとして単純なクエリ文字列を使用して提供するか、リクエストボディ内で定義されたQuery DSLを使用して提供できます。

カウントAPIはmulti-target syntaxをサポートしています。複数のデータストリームとインデックスにわたって単一のカウントAPI検索を実行できます。

操作はすべてのシャードにブロードキャストされます。各シャードIDグループに対して、レプリカが選択され、それに対して実行されます。これは、レプリカがカウントのスケーラビリティを向上させることを意味します。

パスパラメータ

  • <target>
  • (オプション、文字列)検索するデータストリーム、インデックス、およびエイリアスのカンマ区切りリスト。ワイルドカード(*)をサポートします。すべてのデータストリームとインデックスを検索するには、このパラメータを省略するか、*または_allを使用します。

クエリパラメータ

  • allow_no_indices
  • (オプション、ブール値)falseの場合、リクエストは、ワイルドカード式、インデックスエイリアスまたは_all値が欠落または閉じたインデックスのみをターゲットにする場合にエラーを返します。この動作は、リクエストが他のオープンインデックスをターゲットにしている場合でも適用されます。たとえば、foo*,bar*をターゲットにするリクエストは、fooで始まるインデックスが存在するが、barで始まるインデックスが存在しない場合にエラーを返します。
    デフォルトはtrueです。
  • analyzer
  • (オプション、文字列)クエリ文字列に使用するアナライザー。
    このパラメータは、qクエリ文字列パラメータが指定されている場合にのみ使用できます。
  • analyze_wildcard
  • (オプション、ブール値)trueの場合、ワイルドカードおよびプレフィックスクエリが分析されます。デフォルトはfalseです。
    このパラメータは、qクエリ文字列パラメータが指定されている場合にのみ使用できます。
  • default_operator
  • (オプション、文字列)クエリ文字列クエリのデフォルト演算子:ANDまたはOR。デフォルトはORです。
    このパラメータは、qクエリ文字列パラメータが指定されている場合にのみ使用できます。
  • df
  • (オプション、文字列)クエリ文字列にフィールドプレフィックスが指定されていない場合に使用するデフォルトのフィールド。
    このパラメータは、qクエリ文字列パラメータが指定されている場合にのみ使用できます。
  • expand_wildcards
  • (オプション、文字列)ワイルドカードパターンが一致できるインデックスのタイプ。リクエストがデータストリームをターゲットにできる場合、この引数はワイルドカード式が隠しデータストリームに一致するかどうかを決定します。カンマ区切りの値をサポートします(open,hiddenなど)。有効な値は次のとおりです:
    • all
    • すべてのデータストリームまたはインデックスに一致します。隠しデータストリームを含みます[b10cb0563daae284.md#multi-hidden]。
    • open
    • オープンで非隠しのインデックスに一致します。また、非隠しデータストリームにも一致します。
    • closed
    • クローズドで非隠しのインデックスに一致します。また、非隠しデータストリームにも一致します。データストリームはクローズできません。
    • hidden
    • 隠しデータストリームおよび隠しインデックスに一致します。openclosed、またはその両方と組み合わせる必要があります。
    • none
    • ワイルドカードパターンは受け入れられません。
      デフォルトはopenです。
  • ignore_throttled
  • (オプション、ブール値)trueの場合、具体的、拡張された、またはエイリアスされたインデックスは凍結時に無視されます。デフォルトはtrueです。
    [7.16.0] 7.16.0で非推奨。
  • ignore_unavailable
  • (オプション、ブール値)falseの場合、リクエストは欠落またはクローズされたインデックスをターゲットにする場合にエラーを返します。デフォルトはfalseです。
  • lenient
  • (オプション、ブール値)trueの場合、クエリ文字列内の形式に基づくクエリ失敗(数値フィールドにテキストを提供するなど)は無視されます。デフォルトはfalseです。
    このパラメータは、qクエリ文字列パラメータが指定されている場合にのみ使用できます。
  • min_score
  • (オプション、浮動小数点数)結果に含めるためにドキュメントが持つ必要がある最小_score値を設定します。
  • preference
  • (オプション、文字列)操作を実行するノードまたはシャードを指定します。デフォルトはランダムです。
  • q
  • (オプション、文字列)Luceneクエリ文字列構文のクエリ。
  • routing
  • (オプション、文字列)操作を特定のシャードにルーティングするために使用されるカスタム値。
  • terminate_after
  • (オプション、整数)各シャードのために収集する最大ドキュメント数。クエリがこの制限に達すると、Elasticsearchはクエリを早期に終了します。Elasticsearchは、ソートの前にドキュメントを収集します。
    注意して使用してください。Elasticsearchはこのパラメータをリクエストを処理する各シャードに適用します。可能な場合は、Elasticsearchに自動的に早期終了を行わせてください。複数のデータティアにわたるバックインデックスを持つデータストリームをターゲットにするリクエストに対してこのパラメータを指定することは避けてください。

リクエストボディ

Python

  1. resp = client.index(
  2. index="my-index-000001",
  3. id="1",
  4. refresh=True,
  5. document={
  6. "user.id": "kimchy"
  7. },
  8. )
  9. print(resp)
  10. resp1 = client.count(
  11. index="my-index-000001",
  12. q="user:kimchy",
  13. )
  14. print(resp1)
  15. resp2 = client.count(
  16. index="my-index-000001",
  17. query={
  18. "term": {
  19. "user.id": "kimchy"
  20. }
  21. },
  22. )
  23. print(resp2)

Ruby

  1. response = client.index(
  2. index: 'my-index-000001',
  3. id: 1,
  4. refresh: true,
  5. body: {
  6. 'user.id' => 'kimchy'
  7. }
  8. )
  9. puts response
  10. response = client.count(
  11. index: 'my-index-000001',
  12. q: 'user:kimchy'
  13. )
  14. puts response
  15. response = client.count(
  16. index: 'my-index-000001',
  17. body: {
  18. query: {
  19. term: {
  20. 'user.id' => 'kimchy'
  21. }
  22. }
  23. }
  24. )
  25. puts response

Js

  1. const response = await client.index({
  2. index: "my-index-000001",
  3. id: 1,
  4. refresh: "true",
  5. document: {
  6. "user.id": "kimchy",
  7. },
  8. });
  9. console.log(response);
  10. const response1 = await client.count({
  11. index: "my-index-000001",
  12. q: "user:kimchy",
  13. });
  14. console.log(response1);
  15. const response2 = await client.count({
  16. index: "my-index-000001",
  17. query: {
  18. term: {
  19. "user.id": "kimchy",
  20. },
  21. },
  22. });
  23. console.log(response2);

コンソール

  1. PUT /my-index-000001/_doc/1?refresh
  2. {
  3. "user.id": "kimchy"
  4. }
  5. GET /my-index-000001/_count?q=user:kimchy
  6. GET /my-index-000001/_count
  7. {
  8. "query" : {
  9. "term" : { "user.id" : "kimchy" }
  10. }
  11. }

上記の両方の例は同じことを行います:my-index-000001のドキュメント数をuser.idkimchyのものでカウントします。APIは次の応答を返します:

コンソール-結果

  1. {
  2. "count": 1,
  3. "_shards": {
  4. "total": 1,
  5. "successful": 1,
  6. "skipped": 0,
  7. "failed": 0
  8. }
  9. }

クエリはオプションであり、提供されない場合はmatch_allを使用してすべてのドキュメントをカウントします。