boost.asciidoc 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. [[mapping-boost]]
  2. === `boost`
  3. Individual fields can be _boosted_ automatically -- count more towards the relevance score
  4. -- at query time, with the `boost` parameter as follows:
  5. [source,js]
  6. --------------------------------------------------
  7. PUT my_index
  8. {
  9. "mappings": {
  10. "my_type": {
  11. "properties": {
  12. "title": {
  13. "type": "text",
  14. "boost": 2 <1>
  15. },
  16. "content": {
  17. "type": "text"
  18. }
  19. }
  20. }
  21. }
  22. }
  23. --------------------------------------------------
  24. // AUTOSENSE
  25. <1> Matches on the `title` field will have twice the weight as those on the
  26. `content` field, which has the default `boost` of `1.0`.
  27. NOTE: The boost is applied only for term queries (prefix, range and fuzzy queries are not _boosted_).
  28. You can achieve the same effect by using the boost parameter directly in the query, for instance the following query (with field time boost):
  29. [source,js]
  30. --------------------------------------------------
  31. POST _search
  32. {
  33. "query": {
  34. "match" : {
  35. "title": {
  36. "query": "quick brown fox"
  37. }
  38. }
  39. }
  40. }
  41. --------------------------------------------------
  42. // AUTOSENSE
  43. is equivalent to:
  44. [source,js]
  45. --------------------------------------------------
  46. POST _search
  47. {
  48. "query": {
  49. "match" : {
  50. "title": {
  51. "query": "quick brown fox",
  52. "boost": 2
  53. }
  54. }
  55. }
  56. }
  57. --------------------------------------------------
  58. // AUTOSENSE
  59. The boost is also applied when it is copied with the
  60. value in the <<mapping-all-field,`_all`>> field. This means that, when
  61. querying the `_all` field, words that originated from the `title` field will
  62. have a higher score than words that originated in the `content` field.
  63. This functionality comes at a cost: queries on the `_all` field are slower
  64. when field boosting is used.
  65. deprecated[5.0.0, index time boost is deprecated. Instead, the field mapping boost is applied at query time. For indices created before 5.0.0 the boost will still be applied at index time.]
  66. [WARNING]
  67. .Why index time boosting is a bad idea
  68. ==================================================
  69. We advise against using index time boosting for the following reasons:
  70. * You cannot change index-time `boost` values without reindexing all of your
  71. documents.
  72. * Every query supports query-time boosting which achieves the same effect. The
  73. difference is that you can tweak the `boost` value without having to reindex.
  74. * Index-time boosts are stored as part of the <<norms,`norm`>>, which is only one
  75. byte. This reduces the resolution of the field length normalization factor
  76. which can lead to lower quality relevance calculations.
  77. ==================================================