<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>6.4.2</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>6.4.2</version>
<exclusions>
<exclusion>
<artifactId>commons-codec</artifactId>
<groupId>commons-codec</groupId>
</exclusion>
<!--此处要排除掉自带的,这个自带的版本低,会报错-->
<exclusion>
<artifactId>elasticsearch</artifactId>
<groupId>org.elasticsearch</groupId>
</exclusion>
</exclusions>
</dependency>
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.index.query.*;
import org.elasticsearch.script.Script;
import org.elasticsearch.script.ScriptType;
import org.elasticsearch.search.builder.SearchSourceBuilder;
RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("127.0.0.1", 9200, "http")));
/*创建索引*/
CreateIndexRequest request = new CreateIndexRequest("test");
Map<String, Object> jsonMap = new HashMap<>();
Map<String, Object> message = new HashMap<>();
message.put("type", "text");
Map<String, Object> messageInt = new HashMap<>();
messageInt.put("type", "long");
Map<String, Object> messageKeyword = new HashMap<>();
messageKeyword.put("type", "keyword");
Map<String, Object> properties = new HashMap<>();
properties.put("userId", messageInt);
properties.put("userName", message);
properties.put("email", messageKeyword);
Map<String, Object> mapping = new HashMap<>();
mapping.put("properties", properties);
jsonMap.put("test", mapping);
request.mapping("test", jsonMap);
client.indices().create(request,RequestOptions.DEFAULT);
/*向索引添加数据*/
for(long i = 2; i < 1000l; i++)
{
Map<String,Object> data = new HashMap<>();
data.put("userId",i);
data.put("userName","username"+1);
data.put("email", "username"+i+"@qq.com");
IndexRequest request = new IndexRequest("test","test");
request.source(JSON.toJSONString(data), XContentType.JSON);
client.index(request,RequestOptions.DEFAULT);
}
/*条件查询*/
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
TermsQueryBuilder termsQueryBuilder = QueryBuilders.termsQuery("userName", "username1","username2");
SearchRequest request = new SearchRequest("test");
request.types("test");
sourceBuilder.query(termsQueryBuilder);
request.source(sourceBuilder);
SearchResponse searchResponse = client.search(request,RequestOptions.DEFAULT);
Map<String,Object> map = searchResponse.getHits().getAt(0).getSourceAsMap();
System.out.println(searchResponse);
/*脚本查询*/
ScriptQueryBuilder scriptQueryBuilder = QueryBuilders.scriptQuery(new Script(ScriptType.INLINE, Script.DEFAULT_SCRIPT_LANG,"doc['userId'].value%100==0", new HashMap<>()));
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
SearchRequest request = new SearchRequest("test");
request.types("test");
sourceBuilder.query(scriptQueryBuilder);
request.source(sourceBuilder);
SearchResponse searchResponse = client.search(request,RequestOptions.DEFAULT);
Map<String,Object> map = searchResponse.getHits().getAt(0).getSourceAsMap();
for (int i = 0; i < searchResponse.getHits().getHits().length; i++)
{
System.out.println(searchResponse.getHits().getAt(i).getSourceAsString());
}
/*多条件查询*/
ScriptQueryBuilder scriptQueryBuilder = QueryBuilders.scriptQuery(new Script(ScriptType.INLINE, Script.DEFAULT_SCRIPT_LANG,"doc['userId'].value%100==0", new HashMap<>()));
TermsQueryBuilder termsQueryBuilder = QueryBuilders.termsQuery("email", "username300@qq.com","username510@qq.com");
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery().must(scriptQueryBuilder).must(termsQueryBuilder);
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
SearchRequest request = new SearchRequest("test");
request.types("test");
sourceBuilder.query(boolQueryBuilder);
request.source(sourceBuilder);
SearchResponse searchResponse = client.search(request,RequestOptions.DEFAULT);
for (int i = 0; i < searchResponse.getHits().getHits().length; i++)
{
System.out.println(searchResponse.getHits().getAt(i).getSourceAsString());
}