public static void main(String[] args) {
String keyword = "";
//构建一个查询器
BoolQueryBuilder mainQuery = QueryBuilders.boolQuery();
//filter类似于MySql里的and连接,但是不参与排序
mainQuery.filter(QueryBuilders.termQuery("es字段", "参数"));
//must类似于MySql里的and连接,参与条件内的排序
mainQuery.must(QueryBuilders.termQuery("es字段", "参数"));
/**
*
* should条件类似于or拼接,matchPhraseQuery() es分词搜索方法,termQuery 类似于 = 条件equals,es.keyword 为es的一种字段类型,
* keyword不会使本字段做分词,精准搜索可用,分词搜索不要加,但是也要看es库设置的字段类型,建议文本字段设置双类型,text和keyword,keyword会把整个字段作为一个值去匹配,
* 不论里面有没有空格或者大小写之类的符号分割
*/
BoolQueryBuilder matchQuery = QueryBuilders.boolQuery()
.should(QueryBuilders.matchPhraseQuery("es字段", keyword))
.should(QueryBuilders.termQuery("es字段.keyword", keyword));
mainQuery.must(matchQuery);
//模糊搜索 wildcardQuery 类似于like 模糊查询方法
keyword = "*" + keyword + "*";
mainQuery.must(QueryBuilders.wildcardQuery("es字段", keyword));
//集合,数组查询 termsQuery 类似于 in,可查数组,集合
mainQuery.must(QueryBuilders.termsQuery("es字段", new String[]{}/**List,Set*/));
//mustNot 类似于 notIn,可查数组,集合
BoolQueryBuilder termsQuery = QueryBuilders.boolQuery()
.mustNot(QueryBuilders.termsQuery("es.keyword", new String[]{}/**List,Set*/));
mainQuery.must(termsQuery);
//构建搜索器
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
//过滤查询指定字段
searchSourceBuilder.fetchSource(new String[]{字段1,字段2,...},new String[]{});
searchSourceBuilder.query(mainQuery);
SearchRequest searchRequest = new SearchRequest();
searchRequest.source(searchSourceBuilder);
}
ES 查询语句:
//filter_path 只查询source里的字段,不返回索引名和索引类型 GET 索引名/_search?filter_path=hits.hits._source,hits.total { "from": 0, "size": 2000, "query": { "terms": { "字段名": [ "字段值" ] } }, "_source": { "includes": [ "字段1", "字段2", "字段3","字段4","字段5","字段6"...... ] } }
发送 Get请求:一般业务场景,根据id获取一条数据:
GET 索引名/_doc/id
ES update语句:
POST cj_product_ancillary_info_202204/_doc/00389C1A-B05B-4616-967E-EFEFD12F0B12/_update
{
"doc": {
"listedNum": 1
}
}
ES delete语句: 根据id删除
Delete 索引名/文档名称/主键编号
ES delete语句: 根据条件满足删除
POST 索引名/_doc/_delete_by_query
{
"query": {
"term": {
"字段名": {
"value": "字段值"
}
}
}
}
ES delete语句: 模糊搜索满足条件的删除
POST 索引名/_doc/_delete_by_query
{
"query" : {
"wildcard" : {
"字段名" : "*字段值*"
}
}
}
Unknown key for a START_OBJECT in [range].
因为 要写在query内部
GET view_more_product_info/_search
{
"query": {
"bool": {
"filter": [
{
"match":{
"nameEn":{
"query":"*phone*"
}
}
}
]
}
}
}
这样写就不行
GET view_more_product_info/_search
{
"bool": {
"filter": [
{
"match":{
"nameEn":{
"query":"*phone*"
}
}
}
]
}
}