c22f48002c68e934f02079ceb9113e813175becc.svn-base 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. package org.jeecg.common.es;
  2. /**
  3. * 用于创建 ElasticSearch 的 queryString
  4. *
  5. * @author sunjianlei
  6. */
  7. public class QueryStringBuilder {
  8. StringBuilder builder;
  9. public QueryStringBuilder(String field, String str, boolean not, boolean addQuot) {
  10. builder = this.createBuilder(field, str, not, addQuot);
  11. }
  12. public QueryStringBuilder(String field, String str, boolean not) {
  13. builder = this.createBuilder(field, str, not, true);
  14. }
  15. /**
  16. * 创建 StringBuilder
  17. *
  18. * @param field
  19. * @param str
  20. * @param not 是否是不匹配
  21. * @param addQuot 是否添加双引号
  22. * @return
  23. */
  24. public StringBuilder createBuilder(String field, String str, boolean not, boolean addQuot) {
  25. StringBuilder sb = new StringBuilder(field).append(":(");
  26. if (not) {
  27. sb.append(" NOT ");
  28. }
  29. this.addQuotEffect(sb, str, addQuot);
  30. return sb;
  31. }
  32. public QueryStringBuilder and(String str) {
  33. return this.and(str, true);
  34. }
  35. public QueryStringBuilder and(String str, boolean addQuot) {
  36. builder.append(" AND ");
  37. this.addQuot(str, addQuot);
  38. return this;
  39. }
  40. public QueryStringBuilder or(String str) {
  41. return this.or(str, true);
  42. }
  43. public QueryStringBuilder or(String str, boolean addQuot) {
  44. builder.append(" OR ");
  45. this.addQuot(str, addQuot);
  46. return this;
  47. }
  48. public QueryStringBuilder not(String str) {
  49. return this.not(str, true);
  50. }
  51. public QueryStringBuilder not(String str, boolean addQuot) {
  52. builder.append(" NOT ");
  53. this.addQuot(str, addQuot);
  54. return this;
  55. }
  56. /**
  57. * 添加双引号(模糊查询,不能加双引号)
  58. */
  59. private QueryStringBuilder addQuot(String str, boolean addQuot) {
  60. return this.addQuotEffect(this.builder, str, addQuot);
  61. }
  62. /**
  63. * 是否在两边加上双引号
  64. * @param builder
  65. * @param str
  66. * @param addQuot
  67. * @return
  68. */
  69. private QueryStringBuilder addQuotEffect(StringBuilder builder, String str, boolean addQuot) {
  70. if (addQuot) {
  71. builder.append('"');
  72. }
  73. builder.append(str);
  74. if (addQuot) {
  75. builder.append('"');
  76. }
  77. return this;
  78. }
  79. @Override
  80. public String toString() {
  81. return builder.append(")").toString();
  82. }
  83. }