esApi基本概念和操作

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*"
           }
          }
       }
     ]
   }
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值