ElasticSearch Java IN Search
导入 pom
文件
pom
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-elasticsearch</artifactId>
</dependency>
配置 application.yml
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
@Repository
public interface MyRepository extends ElasticsearchRepository<MyIndex, Integer> {
}
编写 Java Search
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)
// .addAggregation(ValueCountAggregationBuilder)
.setSize(1)
.addSort("createTime", SortOrder.DESC)
.execute().actionGet();
log.info("response: {}", response);