object数组缺陷

数组数据:

  1. PUT my_index/_doc/1
  2. {
  3. "group" : "fans",
  4. "user" : [
  5. {
  6. "first" : "John",
  7. "last" : "Smith"
  8. },
  9. {
  10. "first" : "Alice",
  11. "last" : "White"
  12. }
  13. ]
  14. }

内部结构类似,丢失了first和last的结对信息:

  1. {
  2. "group" : "fans",
  3. "user.first" : [ "alice", "john" ],
  4. "user.last" : [ "smith", "white" ]
  5. }

因此搜索first和last时,错误匹配:

  1. GET my_index/_search
  2. {
  3. "query": {
  4. "bool": {
  5. "must": [
  6. { "match": { "user.first": "Alice" }},
  7. { "match": { "user.last": "Smith" }}
  8. ]
  9. }
  10. }
  11. }

返回结果:

  1. {
  2. "took": 1,
  3. "timed_out": false,
  4. "_shards": {
  5. "total": 5,
  6. "successful": 5,
  7. "skipped": 0,
  8. "failed": 0
  9. },
  10. "hits": {
  11. "total": 1,
  12. "max_score": 0.5753642,
  13. "hits": [
  14. {
  15. "_index": "my_index",
  16. "_type": "_doc",
  17. "_id": "1",
  18. "_score": 0.5753642,
  19. "_source": {
  20. "group": "fans",
  21. "user": [
  22. {
  23. "first": "John",
  24. "last": "Smith"
  25. },
  26. {
  27. "first": "Alice",
  28. "last": "White"
  29. }
  30. ]
  31. }
  32. }
  33. ]
  34. }
  35. }

查看映射:

  1. GET my_index/_doc/_mapping
  1. {
  2. "my_index": {
  3. "mappings": {
  4. "_doc": {
  5. "properties": {
  6. "group": {
  7. "type": "text",
  8. "fields": {
  9. "keyword": {
  10. "type": "keyword",
  11. "ignore_above": 256
  12. }
  13. }
  14. },
  15. "user": {
  16. "properties": {
  17. "first": {
  18. "type": "text",
  19. "fields": {
  20. "keyword": {
  21. "type": "keyword",
  22. "ignore_above": 256
  23. }
  24. }
  25. },
  26. "last": {
  27. "type": "text",
  28. "fields": {
  29. "keyword": {
  30. "type": "keyword",
  31. "ignore_above": 256
  32. }
  33. }
  34. }
  35. }
  36. }
  37. }
  38. }
  39. }
  40. }
  41. }
文档更新时间: 2020-03-12 10:32   作者:admin