2
2
3
3
import java .util .List ;
4
4
5
- import org .apache .lucene .util . QueryBuilder ;
5
+ import org .apache .lucene .search . TermQuery ;
6
6
import org .elasticsearch .common .unit .Fuzziness ;
7
7
import org .elasticsearch .index .query .BoolQueryBuilder ;
8
+ import org .elasticsearch .index .query .DisMaxQueryBuilder ;
8
9
import org .elasticsearch .index .query .MultiMatchQueryBuilder ;
9
10
import org .elasticsearch .index .query .QueryBuilders ;
11
+ import org .elasticsearch .index .query .WildcardQueryBuilder ;
10
12
import org .springframework .beans .factory .annotation .Autowired ;
11
13
import org .springframework .data .elasticsearch .core .ElasticsearchOperations ;
12
14
import org .springframework .data .elasticsearch .core .query .NativeSearchQuery ;
13
15
import org .springframework .stereotype .Service ;
14
16
15
17
import com .elk .spring .pojo .Accounts ;
16
18
import com .elk .spring .repository .AccountRepository ;
19
+ import static org .elasticsearch .index .query .QueryBuilders .termQuery ;
17
20
18
21
@ Service
22
+
19
23
public class AccountService {
20
24
21
25
@ Autowired
@@ -30,20 +34,46 @@ public void check() {
30
34
31
35
public List <Accounts > findByFirstName (String name ) {
32
36
BoolQueryBuilder queryBuilder = QueryBuilders .boolQuery ()
33
- .must (QueryBuilders .matchQuery ("firstname" , name ).fuzziness (" AUTO" ));
37
+ .must (QueryBuilders .matchQuery ("firstname" , name ).fuzziness (Fuzziness . AUTO ));
34
38
35
- NativeSearchQuery nativeSearchQuery = new NativeSearchQuery (queryBuilder );
36
- List <Accounts > users = template .queryForList (nativeSearchQuery , Accounts .class );
37
- return users ;
39
+ return generateResult (queryBuilder );
38
40
39
41
}
40
42
41
43
public List <Accounts > findByFirstNameLastName (String name ) {
42
-
44
+ // find query on multiple fields
43
45
MultiMatchQueryBuilder builder = QueryBuilders .multiMatchQuery (name , "firstname" , "lastname" )
44
46
.fuzziness (Fuzziness .AUTO );
47
+
48
+ return generateResult (builder );
49
+ }
50
+
51
+ public List <Accounts > wildCardQuery (String field , String name ) {
52
+ // wildcard query
53
+ WildcardQueryBuilder wildcardQuery = QueryBuilders .wildcardQuery (field , name + "*" );
54
+ return generateResult (wildcardQuery );
55
+ }
56
+
57
+ public List <Accounts > getResultByFilter (double from , double to ) {
58
+ BoolQueryBuilder queryBuilder = QueryBuilders .boolQuery ()
59
+
60
+ .filter (QueryBuilders .rangeQuery ("balance" ).gt (from ).lt (to ));
61
+
62
+ return generateResult (queryBuilder );
63
+
64
+ }
65
+
66
+ public List <Accounts > disMaxQuery (String name ) {
67
+ // condition 1 or condition 2
68
+ DisMaxQueryBuilder disMaxQueryBuilder = QueryBuilders .disMaxQuery ().add (termQuery ("firstname" , name ))
69
+ .add (termQuery ("lastname" , name ));
70
+
71
+ return generateResult (disMaxQueryBuilder );
72
+ }
73
+
74
+ private List <Accounts > generateResult (org .elasticsearch .index .query .QueryBuilder builder ) {
45
75
NativeSearchQuery nativeSearchQuery = new NativeSearchQuery (builder );
46
- List < Accounts > users = template . queryForList ( nativeSearchQuery , Accounts . class );
47
- return users ;
76
+
77
+ return template . queryForList ( nativeSearchQuery , Accounts . class ) ;
48
78
}
49
79
}
0 commit comments