スパン近接クエリ

互いに近いスパンを一致させます。スロップを指定でき、これは最大の未一致位置の数を示し、一致が順序通りである必要があるかどうかも指定できます。以下はその例です:

Python

  1. resp = client.search(
  2. query={
  3. "span_near": {
  4. "clauses": [
  5. {
  6. "span_term": {
  7. "field": "value1"
  8. }
  9. },
  10. {
  11. "span_term": {
  12. "field": "value2"
  13. }
  14. },
  15. {
  16. "span_term": {
  17. "field": "value3"
  18. }
  19. }
  20. ],
  21. "slop": 12,
  22. "in_order": False
  23. }
  24. },
  25. )
  26. print(resp)

Ruby

  1. response = client.search(
  2. body: {
  3. query: {
  4. span_near: {
  5. clauses: [
  6. {
  7. span_term: {
  8. field: 'value1'
  9. }
  10. },
  11. {
  12. span_term: {
  13. field: 'value2'
  14. }
  15. },
  16. {
  17. span_term: {
  18. field: 'value3'
  19. }
  20. }
  21. ],
  22. slop: 12,
  23. in_order: false
  24. }
  25. }
  26. }
  27. )
  28. puts response

Js

  1. const response = await client.search({
  2. query: {
  3. span_near: {
  4. clauses: [
  5. {
  6. span_term: {
  7. field: "value1",
  8. },
  9. },
  10. {
  11. span_term: {
  12. field: "value2",
  13. },
  14. },
  15. {
  16. span_term: {
  17. field: "value3",
  18. },
  19. },
  20. ],
  21. slop: 12,
  22. in_order: false,
  23. },
  24. },
  25. });
  26. console.log(response);

コンソール

  1. GET /_search
  2. {
  3. "query": {
  4. "span_near": {
  5. "clauses": [
  6. { "span_term": { "field": "value1" } },
  7. { "span_term": { "field": "value2" } },
  8. { "span_term": { "field": "value3" } }
  9. ],
  10. "slop": 12,
  11. "in_order": false
  12. }
  13. }
  14. }

clauses要素は、1つ以上の他のスパンタイプのクエリのリストであり、slopは許可される最大の未一致位置の数を制御します。