提取码:wjn0
自己写一个全部数据导入 用 PUT /bank/_doc/_bulk
package com.xh.spring_es.service.impl;
import com.xh.spring_es.bean.Bank;
import com.xh.spring_es.bean.Home;
import com.xh.spring_es.dao.BankDao;
import com.xh.spring_es.service.BankService;
import org.apache.lucene.search.join.ScoreMode;
import org.elasticsearch.common.lucene.search.function.FunctionScoreQuery;
import org.elasticsearch.index.query.*;
import org.elasticsearch.indices.TermsLookup;
import org.elasticsearch.script.script;
import org.elasticsearch.script.scriptType;
import org.elasticsearch.search.sort.SortBuilders;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
import org.springframework.data.elasticsearch.core.SearchHit;
import org.springframework.data.elasticsearch.core.SearchHits;
import org.springframework.data.elasticsearch.core.geo.GeoPoint;
import org.springframework.data.elasticsearch.core.query.NativeSearchQuery;
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
@Service
public class BankServiceImpl implements BankService {
@Autowired
private ElasticsearchRestTemplate elasticsearchRestTemplate;
@Override
public void searchTest01() {
System.out.println("11111");
//name: 为ES中保存的字段
//QueryBuilders.queryStringQuery 数据库中存在某个值的全部查出来
//
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.queryStringQuery("1"))
.build();
System.out.println(searchQuery.toString());
//一般情况下,我们不是直接是new NativeSearchQuery,而是使用NativeSearchQueryBuilder。
SearchHits search = elasticsearchRestTemplate.search(searchQuery, Bank.class);
System.out.println(search);
for (SearchHit bankSearchHit : search) {
//SearchHit{id='1', score=1.0, sortValues=[], content=Bank(accountNumber=1, address=880 Holmes Lane, age=32, balance=39225, city=Brogan, email=amberduke@pyrami.com, employer=Pyrami, firstName=Amber, gender=M, lastName=Duke, state=IL), highlightFields={}}
System.out.println(bankSearchHit);
}
}
public void searchTest02() {
//QueryBuilders.rangeQuery("account_number") 查询某个范围的数据
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.rangeQuery("account_number")
.gte(10).lte(100))
.build();
SearchHits search = elasticsearchRestTemplate.search(searchQuery, Bank.class);
for (SearchHit bankSearchHit : search) {
System.out.println(bankSearchHit);
}
}
public SearchHits searchTest03() {
//QueryBuilders.matchAllQuery() 查询所有的数据
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.matchAllQuery())
.build();
SearchHits search = elasticsearchRestTemplate.search(searchQuery, Bank.class);
return search;
}
public SearchHits searchTest04() {
//QueryBuilders.idsQuery().addIds("1","10","100","13") 根据ID集合查询对应数据
//Set ids = QueryBuilders.idsQuery().ids();
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.idsQuery().addIds("1", "10", "100", "13"))
.build();
SearchHits search = elasticsearchRestTemplate.search(searchQuery, Bank.class);
return search;
}
public SearchHits searchTest05() {
//
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.matchBoolPrefixQuery("address", "Lane").analyzer("ik_max_word").minimumShouldMatch("20%").operator(Operator.OR).analyzer("").minimumShouldMatch("100%"))
.build();
SearchHits search = elasticsearchRestTemplate.search(searchQuery, Bank.class);
return search;
}
public SearchHits searchTest06() {
//
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.matchPhrasePrefixQuery("address", "Sch"))
.build();
SearchHits search = elasticsearchRestTemplate.search(searchQuery, Bank.class);
return search;
}
public SearchHits searchTest07() {
//
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.matchPhraseQuery("address", "School"))
.build();
SearchHits search = elasticsearchRestTemplate.search(searchQuery, Bank.class);
return search;
}
public SearchHits searchTest08() {
//
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.matchQuery("firstname", "Amber").operator(Operator.OR))
.build();
SearchHits search = elasticsearchRestTemplate.search(searchQuery, Bank.class);
return search;
}
public SearchHits searchTest09() {
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
//.withQuery(QueryBuilders.moreLikeThisQuery(new String[]{"${account_number}"},new String[]{"${1}"},null))
.withQuery(QueryBuilders.moreLikeThisQuery(new String[]{"lastname"}, new String[]{"Duke"}, null))
.build();
SearchHits search = elasticsearchRestTemplate.search(searchQuery, Bank.class);
return search;
}
public SearchHits searchTest10() {
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.multiMatchQuery("Duke", "firstname", "lastname"))
.build();
SearchHits search = elasticsearchRestTemplate.search(searchQuery, Bank.class);
return search;
}
public SearchHits searchTest11() {
BoolQueryBuilder nestedBoolQueryBuilder = QueryBuilders.boolQuery();
nestedBoolQueryBuilder.must(QueryBuilders.matchQuery("blackList.relationValue", ""));
nestedBoolQueryBuilder.must(QueryBuilders.matchQuery("blackList.relationKey", ""));
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.nestedQuery("blackList", nestedBoolQueryBuilder, ScoreMode.None))
.build();
SearchHits search = elasticsearchRestTemplate.search(searchQuery, Bank.class);
return search;
}
public SearchHits searchTest12() {
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.prefixQuery("email", "hattiebo"))
.build();
SearchHits search = elasticsearchRestTemplate.search(searchQuery, Bank.class);
return search;
}
public SearchHits searchTest13() {
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.regexpQuery("email", "h.*l"))
.build();
SearchHits search = elasticsearchRestTemplate.search(searchQuery, Bank.class);
return search;
}
public SearchHits searchTest14() {
Map params = new HashMap<>();
params.put("param1", 2);
script script = new script(scriptType.INLINE, script.DEFAULT_script_LANG,
"doc['自定字段'].value > params.param1", params);
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.scriptQuery(script))
.build();
SearchHits search = elasticsearchRestTemplate.search(searchQuery, Bank.class);
return search;
}
public SearchHits searchTest15() {
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.simpleQueryStringQuery("M"))
.build();
SearchHits search = elasticsearchRestTemplate.search(searchQuery, Bank.class);
return search;
}
public SearchHits searchTest16() {
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.spanContainingQuery(
QueryBuilders.spanNearQuery(
QueryBuilders.spanTermQuery("email", "amberd"),
12).addClause(QueryBuilders.spanTermQuery("email", "hattie")),
QueryBuilders.spanTermQuery("email", "dalea")))
.build();
SearchHits search = elasticsearchRestTemplate.search(searchQuery, Bank.class);
return search;
}
public SearchHits searchTest17() {
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.spanFirstQuery(
QueryBuilders.spanTermQuery("firstname", "Duke"),
4))
.build();
SearchHits search = elasticsearchRestTemplate.search(searchQuery, Bank.class);
return search;
}
public SearchHits searchTest18() {
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.spanMultiTermQueryBuilder(QueryBuilders.wildcardQuery("email", "amberduke@pyrami.com")))
.build();
SearchHits search = elasticsearchRestTemplate.search(searchQuery, Bank.class);
return search;
}
public SearchHits searchTest19() {
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.spanNearQuery(QueryBuilders.spanTermQuery("email", "amberduke"),
12).addClause(QueryBuilders.spanTermQuery("email", "sss")))
.build();
SearchHits search = elasticsearchRestTemplate.search(searchQuery, Bank.class);
return search;
}
public SearchHits searchTest20() {
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.spanNotQuery(QueryBuilders.spanTermQuery("email", "amberduke"),
QueryBuilders.spanTermQuery("email", "ss")))
.build();
SearchHits search = elasticsearchRestTemplate.search(searchQuery, Bank.class);
return search;
}
public SearchHits searchTest21() {
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.spanOrQuery(QueryBuilders.spanTermQuery("email", "amberduke"))
.addClause(QueryBuilders.spanTermQuery("email", "ss")))
.build();
SearchHits search = elasticsearchRestTemplate.search(searchQuery, Bank.class);
return search;
}
public SearchHits searchTest22() {
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.spanTermQuery("email", "amberduke"))
.build();
SearchHits search = elasticsearchRestTemplate.search(searchQuery, Bank.class);
return search;
}
public SearchHits searchTest23() {
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.spanWithinQuery(QueryBuilders.spanNearQuery(
QueryBuilders.spanTermQuery("待查询的字段", "待查询的值"),
12).addClause(QueryBuilders.spanTermQuery("待查询的字段", "待查询的值")),
QueryBuilders.spanTermQuery("待查询的字段", "待查询的值")))
.build();
SearchHits search = elasticsearchRestTemplate.search(searchQuery, Bank.class);
return search;
}
public SearchHits searchTest24() {
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.termQuery("待查询的字段", "待查询的值"))
.build();
SearchHits search = elasticsearchRestTemplate.search(searchQuery, Bank.class);
return search;
}
public SearchHits searchTest25() {
TermsLookup termsLookup = new TermsLookup("作为查询条件的索引", "作为查询条件的文档的id", "作为查询条件的字段");
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.termsLookupQuery("待查询的字段", termsLookup))
.build();
SearchHits search = elasticsearchRestTemplate.search(searchQuery, Bank.class);
return search;
}
public SearchHits searchTest26() {
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.wildcardQuery("待查询的字段", "待查询的值"))
.build();
SearchHits search = elasticsearchRestTemplate.search(searchQuery, Bank.class);
return search;
}
public SearchHits searchTest27() {
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.wrapperQuery("eyJ0ZXJtIiA6IHsgIuW+heafpeivoueahOWtl+autSI6ICLlvoXmn6Xor6LnmoTlgLwiIH19"))
.build();
SearchHits search = elasticsearchRestTemplate.search(searchQuery, Bank.class);
return search;
}
public SearchHits searchTest28() {
QueryBuilder positiveQuery = QueryBuilders.wildcardQuery("待查询的字段", "待查询的值");
QueryBuilder negativeQuery = QueryBuilders.wildcardQuery("待查询的字段", "待查询的值");
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.boostingQuery(positiveQuery, negativeQuery))
.build();
SearchHits search = elasticsearchRestTemplate.search(searchQuery, Bank.class);
return search;
}
public SearchHits searchTest29() {
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.constantScoreQuery(QueryBuilders.termQuery("待查询的字段", "待查询的值")).boost(1.2f))
.build();
SearchHits search = elasticsearchRestTemplate.search(searchQuery, Bank.class);
return search;
}
public SearchHits searchTest30() {
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.disMaxQuery()
.add(QueryBuilders.matchPhrasePrefixQuery("待查询的字段", "待查询的值"))
.add(QueryBuilders.matchPhraseQuery("待查询的字段", "待查询的值")))
.build();
SearchHits search = elasticsearchRestTemplate.search(searchQuery, Bank.class);
return search;
}
public SearchHits searchTest31() {
//对于地理点
GeoPoint geo = new GeoPoint(-35.58, 20.4);
DistanceFeatureQueryBuilder.Origin origin = new DistanceFeatureQueryBuilder.Origin(String.valueOf(geo));
DistanceFeatureQueryBuilder dfqb = new DistanceFeatureQueryBuilder("location$location", origin, "1km");
//对于日期
DistanceFeatureQueryBuilder.Origin origin1 = new DistanceFeatureQueryBuilder.Origin("now");
DistanceFeatureQueryBuilder dfqb1 = new DistanceFeatureQueryBuilder("date_established$date", origin1, "10d");
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.distanceFeatureQuery("字段", origin, "1km"))
.build();
SearchHits search = elasticsearchRestTemplate.search(searchQuery, Bank.class);
return search;
}
public SearchHits searchTest32() {
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.existsQuery("name"))
.build();
SearchHits search = elasticsearchRestTemplate.search(searchQuery, Bank.class);
return search;
}
public SearchHits searchTest33() {
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.fieldMaskingSpanQuery(
QueryBuilders.spanTermQuery("待查询的字段", "待查询的值"),
"待查询的字段"))
.build();
SearchHits search = elasticsearchRestTemplate.search(searchQuery, Bank.class);
return search;
}
public SearchHits searchTest34() {
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.functionScoreQuery(
QueryBuilders.termQuery("待查询的字段", "待查询的值")))
.build();
SearchHits search = elasticsearchRestTemplate.search(searchQuery, Bank.class);
return search;
}
public SearchHits searchTest35() {
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.fuzzyQuery("待查询的字段", "待查询的值"))
.build();
SearchHits search = elasticsearchRestTemplate.search(searchQuery, Bank.class);
return search;
}
public SearchHits searchTest36() {
double top = 37.779637;
double left = 112.510492;
double bottom = 37.72303;
double right = 112.688716;
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.geoBoundingBoxQuery("location").setCorners(top, left, bottom, right))
.build();
SearchHits search = elasticsearchRestTemplate.search(searchQuery, Home.class);
return search;
}
}
实体类
package com.xh.spring_es.bean;
import lombok.Data;
import lombok.ToString;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;
@Data
@ToString
@document(indexName = "bank")
public class Bank {
@Id
@Field(type = FieldType.Text,name = "account_number")
private Integer accountNumber;
@Field(type = FieldType.Keyword,name = "address")
private String address;
private Integer age;
private Integer balance;
@Field(analyzer = "ik_max_word",type = FieldType.Text,name = "city")
private String city;
@Field(analyzer = "ik_max_word",type = FieldType.Text,name = "email")
private String email;
@Field(type = FieldType.Text,name = "employer")
private String employer;
@Field(analyzer = "ik_max_word",type = FieldType.Text,name = "firstname")
private String firstName;
@Field(type = FieldType.Text,name = "gender")
private String gender;
@Field(type = FieldType.Text,name = "lastname")
private String lastName;
@Field(type = FieldType.Text,name = "state")
private String state;
}
yml文件 可以选择使用ES配置类来获取连接
spring:
elasticsearch:
rest:
uris: http://192.168.95.128:9200
username: test
password: test
application:
name: ES7
server:
port: 8002
依赖
org.projectlombok lombokorg.springframework.boot spring-boot-starter-data-elasticsearch
package com.xh.spring_es.config;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.elasticsearch.client.ClientConfiguration;
import org.springframework.data.elasticsearch.client.RestClients;
import org.springframework.data.elasticsearch.config.AbstractElasticsearchConfiguration;
//@Configuration
//public class EsConfig extends AbstractElasticsearchConfiguration {
// @Override
// @Bean
// public RestHighLevelClient elasticsearchClient() {
// final ClientConfiguration clientConfiguration = ClientConfiguration.builder()
// .connectedTo("192.168.8.101:9200")
// .build();
// return RestClients.create(clientConfiguration).rest();
// }
//}
转载请附上作者
====================本文未完成之后会跟新在Java中的操作===================



