当前位置:   article > 正文

了解 ignore_above 参数对 Elasticsearch 中磁盘使用的影响_ignore above

ignore above

Elasticsearch 中,ignore_above 参数允许你忽略(而不是索引)长于指定长度的字符串。 这对于限制字段的大小以避免性能问题很有用。 在本文中,我们将探讨 “ignore_above” 参数如何影响 Elasticsearch 中字段的大小,并将比较两个不同的 ignore_above 参数之间的磁盘使用情况。

首先,我们创建一个名为 “test_index” 的索引,其中包含三个字段:“field_ignore_above_4”、“field_ignore_above_256” 和 “field_ignore_above_512”。 每个字段的类型都是 “keyword”,并且具有不同的 “ignore_above” 设置:

  1. PUT test_index
  2. {
  3. "mappings": {
  4. "properties": {
  5. "field_ignore_above_4": {
  6. "type": "keyword",
  7. "ignore_above": 4
  8. },
  9. "field_ignore_above_256": {
  10. "type": "keyword",
  11. "ignore_above": 256
  12. },
  13. "field_ignore_above_512": {
  14. "type": "keyword",
  15. "ignore_above": 512
  16. }
  17. }
  18. }
  19. }

接下来,我们将文档插入到 `test_index` 中:

  1. PUT test_index/_doc/1
  2. {
  3. "field_ignore_above_4": "some value",
  4. "field_ignore_above_256": "some value",
  5. "field_ignore_above_512": "some value"
  6. }

当我们对 “test_index” 执行搜索时,我们可以看到 “field_ignore_above_4” 被忽略,因为它的值超出了 “ignore_above” 限制:

GET test_index/_search

响应显示 “field_ignore_above_4” 被忽略。这是因为 "some value" 的字符串长度超过 4。

我们做如下的查询:

  1. GET test_index/_search
  2. {
  3. "query": {
  4. "term": {
  5. "field_ignore_above_256": {
  6. "value": "some value"
  7. }
  8. }
  9. }
  10. }

上面显示是有一个文档的。我们如下针对字段  field_ignore_above_4 来做查询:

  1. GET test_index/_search
  2. {
  3. "query": {
  4. "term": {
  5. "field_ignore_above_4": {
  6. "value": "some value"
  7. }
  8. }
  9. }
  10. }

上面是不显示任何的文档的。这说明这个 field_ignore_above_4 字段确实是被忽略了。

现在,我们可以使用 “_disk_usage” API 计算字段的大小:

POST /test_index/_disk_usage?run_expensive_tasks=true&filter_path=**.fields.field*

响应提供有关每个字段大小的详细信息:

  1. {
  2. "test_index": {
  3. "fields": {
  4. "field_ignore_above_256": {
  5. "total": "30b",
  6. "total_in_bytes": 30,
  7. "inverted_index": {
  8. "total": "19b",
  9. "total_in_bytes": 19
  10. },
  11. "stored_fields": "0b",
  12. "stored_fields_in_bytes": 0,
  13. "doc_values": "11b",
  14. "doc_values_in_bytes": 11,
  15. "points": "0b",
  16. "points_in_bytes": 0,
  17. "norms": "0b",
  18. "norms_in_bytes": 0,
  19. "term_vectors": "0b",
  20. "term_vectors_in_bytes": 0,
  21. "knn_vectors": "0b",
  22. "knn_vectors_in_bytes": 0
  23. },
  24. "field_ignore_above_512": {
  25. "total": "30b",
  26. "total_in_bytes": 30,
  27. "inverted_index": {
  28. "total": "19b",
  29. "total_in_bytes": 19
  30. },
  31. "stored_fields": "0b",
  32. "stored_fields_in_bytes": 0,
  33. "doc_values": "11b",
  34. "doc_values_in_bytes": 11,
  35. "points": "0b",
  36. "points_in_bytes": 0,
  37. "norms": "0b",
  38. "norms_in_bytes": 0,
  39. "term_vectors": "0b",
  40. "term_vectors_in_bytes": 0,
  41. "knn_vectors": "0b",
  42. "knn_vectors_in_bytes": 0
  43. }
  44. }
  45. }
  46. }

从响应中,我们可以看到 field_ignore_above_256 和 field_ignore_above_512 的总大小相同,均为 30 字节。

有趣的是,“field_ignore_above_4” 不包含在磁盘使用统计信息中,因为它在索引过程中由于 “ignore_above” 设置而被忽略。 这演示了如何使用 “ignore_above” 参数来控制字段的大小并优化 Elasticsearch 存储的使用。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/657820
推荐阅读
相关标签
  

闽ICP备14008679号