ElasticSearch Java IN Search
导入pom
文件
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-elasticsearch</artifactId>
</dependency>
配置application.yml
spring:
data:
elasticsearch:
cluster-name: clusterName
cluster-nodes: <IP>:<PORT>
repositories:
enabled: true
properties:
node:
master: false
name: master
编写索引类
@Document(indexName = "myIndex", type = "index_info")
public class MyIndex {
@Id
private Integer id;
private String name;
}
编写Repository
@Repository
public interface MyRepository extends ElasticsearchRepository<MyIndex, Integer> {
}
编写Java Search
查询某个字段匹配多个值: SELECT id, name FROM MyIndex WHERE field IN ('V1', 'V2')
BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
queryBuilder.should(QueryBuilders.matchQuery("field", Arrays.asList("V1","V2")).boost(1));
Iterable<Object> search = myRepository.search(customQq);
search.forEach(System.out::println);
通过 TransportClient 去 ES 查询
BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
TermsQueryBuilder customQq = QueryBuilders.termsQuery("customQq", Arrays.asList("2845243653"));
query.must(customQq);
TermQueryBuilder fraudType = QueryBuilders.termQuery("fraudType", 0);
query.must(fraudType);
SearchResponse response = client
.prepareSearch("IndexName")
.setTypes("IndexType")
.setQuery(queryBuilder)
.setSize(1)
.addSort("createTime", SortOrder.DESC)
.execute().actionGet();
log.info("response: {}", response);