プレフィックスクエリ

特定のフィールドに特定のプレフィックスを含むドキュメントを返します。

リクエストの例

次の検索は、user.idフィールドにkiで始まる用語が含まれるドキュメントを返します。

Python

  1. resp = client.search(
  2. query={
  3. "prefix": {
  4. "user.id": {
  5. "value": "ki"
  6. }
  7. }
  8. },
  9. )
  10. print(resp)

Ruby

  1. response = client.search(
  2. body: {
  3. query: {
  4. prefix: {
  5. 'user.id' => {
  6. value: 'ki'
  7. }
  8. }
  9. }
  10. }
  11. )
  12. puts response

Js

  1. const response = await client.search({
  2. query: {
  3. prefix: {
  4. "user.id": {
  5. value: "ki",
  6. },
  7. },
  8. },
  9. });
  10. console.log(response);

コンソール

  1. GET /_search
  2. {
  3. "query": {
  4. "prefix": {
  5. "user.id": {
  6. "value": "ki"
  7. }
  8. }
  9. }
  10. }

プレフィックスのトップレベルパラメータ

  • <field>
  • (必須、オブジェクト) 検索したいフィールド。

のパラメータ

  • value
  • (必須、文字列) 提供された<field>内で見つけたい用語の先頭文字。
  • rewrite
  • (オプション、文字列) クエリを再構築するために使用されるメソッド。有効な値と詳細については、rewriteパラメータを参照してください。
  • case_insensitive [7.10.0] 7.10.0で追加されました。
  • (オプション、ブール値) trueに設定すると、インデックスフィールドの値とのASCII大文字小文字を区別しない一致を許可します。デフォルトはfalseで、これは一致の大文字小文字の区別が基になるフィールドのマッピングに依存することを意味します。

ノート

短いリクエストの例

  1. #### Python
  2. ``````python
  3. resp = client.search(
  4. query={
  5. "prefix": {
  6. "user": "ki"
  7. }
  8. },
  9. )
  10. print(resp)
  11. `

Ruby

  1. response = client.search(
  2. body: {
  3. query: {
  4. prefix: {
  5. user: 'ki'
  6. }
  7. }
  8. }
  9. )
  10. puts response

Js

  1. const response = await client.search({
  2. query: {
  3. prefix: {
  4. user: "ki",
  5. },
  6. },
  7. });
  8. console.log(response);

コンソール

  1. GET /_search
  2. {
  3. "query": {
  4. "prefix" : { "user" : "ki" }
  5. }
  6. }

プレフィックスクエリの高速化

index_prefixesマッピングパラメータを使用してプレフィックスクエリを高速化できます。これを有効にすると、Elasticsearchは設定に従って別のフィールドにプレフィックスをインデックスします。これにより、Elasticsearchはより効率的にプレフィックスクエリを実行できますが、インデックスが大きくなります。

高コストクエリを許可する

search.allow_expensive_queriesがfalseに設定されている場合、プレフィックスクエリは実行されません。ただし、index_prefixesが有効になっている場合、最適化されたクエリが構築され、遅いとは見なされず、この設定にもかかわらず実行されます。