スパンマルチタームクエリ

span_multi クエリは、multi term query (ワイルドカード、ファジー、プレフィックス、範囲、または正規表現クエリのいずれか) を span query としてラップすることを可能にし、ネストできるようにします。例:

Python

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

Ruby

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

Js

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

コンソール

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

クエリに関連付けられるブーストもあります:

Python

  1. resp = client.search(
  2. query={
  3. "span_multi": {
  4. "match": {
  5. "prefix": {
  6. "user.id": {
  7. "value": "ki",
  8. "boost": 1.08
  9. }
  10. }
  11. }
  12. }
  13. },
  14. )
  15. print(resp)

Ruby

  1. response = client.search(
  2. body: {
  3. query: {
  4. span_multi: {
  5. match: {
  6. prefix: {
  7. 'user.id' => {
  8. value: 'ki',
  9. boost: 1.08
  10. }
  11. }
  12. }
  13. }
  14. }
  15. }
  16. )
  17. puts response

Js

  1. const response = await client.search({
  2. query: {
  3. span_multi: {
  4. match: {
  5. prefix: {
  6. "user.id": {
  7. value: "ki",
  8. boost: 1.08,
  9. },
  10. },
  11. },
  12. },
  13. },
  14. });
  15. console.log(response);

コンソール

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

span_multi クエリは、クエリに一致するタームの数が indices.query.bool.max_clause_count 検索設定 を超えると、あまりにも多くのクローズ失敗に直面します。無制限の拡張を避けるために、マルチタームクエリの リライト方法top_terms_* リライトに設定できます。また、span_multiprefix クエリのみに使用する場合は、text フィールドの index_prefixes フィールドオプションを有効にできます。これにより、フィールド上の任意のプレフィックスクエリがインデックスされたプレフィックスに一致する単一のタームクエリにリライトされます。