1、脚本控制es
- es的crud
 
# 创建索引
PUT /test01
# 查询索引 结构
GET /test01
# 删除索引
DELETE /test01
# 创建类型
PUT /test1
{
  "mappings": {
    "properties": {
      "name":{
        "type": "text"
      },
      "content":{
        "type": "text"
      },
      "price":{
        "type": "double"
      }
    }
  }
}
# 插入数据
POST /test1/_doc/2
{
  "name":"奥里给",
  "content":"6786899",
  "price":66.6
}
# 如果id相同 则是修改操作
POST /test1/_doc/1
{
  "name":"小李",
  "content":"45555",
  "price":22.6
}
# 查询索引 数据
GET /test1/_search
# 删除id为2的数据
DELETE /test1/_doc/21.1、查询所有
GET /test1/_search
{
  "query": {
    "match_all": {}
  }
}1.2、模糊查询
GET /test1/_search
{
  "query": {
    "match": {
      "name": "小"
    }
  }
}1.3、精确查询
GET /test1/_search
{
  "query": {
    "term": {
      "price": "66.6"
    }
  }
}1.4、区间查询
GET /test1/_search
{
  "query": {
    "range": {
      "price": {
        "gte": 44,
        "lte": 70
      }
    }
  }
}1.5、多条件组合查询
- 查询name中包含“小”的和44<=price<=70的
 
GET /test1/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "name": "小"
          }
        },
        {
          "range": {
            "price": {
              "gte": 44,
              "lte": 70
            }
          }
        }
      ]
    }
  }
}1.6、分页查询
- from:起始位置,size:分页单位,sort:排序
 
GET /test1/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "name": "小"
          }
        },
        {
          "range": {
            "price": {
              "gte": 20,
              "lte": 70
            }
          }
        }
      ]
    }
  },
  "from": 0,
  "size": 3,
  "sort": [
    {
      "price": {
        "order": "desc"
      }
    }
  ]
}1.7、高亮查询
GET /test1/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "name": "小"
          }
        },
        {
          "range": {
            "price": {
              "gte": 44,
              "lte": 70
            }
          }
        }
      ]
    }
  },
  "highlight": {
    "fields": {
      "name": {
        "pre_tags": "<font color='red'>",
        "post_tags": "</font>"
      }
    }
  }
}1.8、使用分词器查询
- 验证分词器(对中文不太友好,得指定分词器)
 - 倒排索引 根据id找内容
 - 正排索引 根据关键词内容找id
 - 最小分词
 
POST /_analyze
{
  "analyzer": "ik_smart", 
  "text":"饼干好吃"
}- 最大分词
 
POST /_analyze
{
  "analyzer": "ik_max_word", 
  "text":"饼干好吃"
}2、java控制es
2.1、全量同步到es(原生写法)
- 使用集成spring boot的 elasticsearchRestTemplate 方法
 
List<Emp> list = empService.list();
// 创建索引     将数据库中的数据全量同步到es
ArrayList<IndexQuery> indexQueries = new ArrayList<>();
for (Emp emp : list) {
    IndexQuery indexQuery = new IndexQueryBuilder()
          .withId(emp.getId()+"")
          .withObject(emp)
          .build();
    indexQueries.add(indexQuery);
}
elasticsearchRestTemplate.bulkIndex(indexQueries, Emp.class);2.2、全量同步到es(简易写法)
- 使用es官方提供的 CrudRepository 方法
 - 自定义一个接口,继承这个方法
 
package com.llh.repository;
import com.llh.domain.Emp;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
/**
 * User: lilinhan
 * DateTime: 2023/9/19 20:09
 */
@Repository
public interface EmpRepository extends CrudRepository<Emp,Integer> {
}- 测试类使用
 
//  同步(全量同步+增量同步)
@Autowired
EmpRepository empRepository;
List<Emp> list = empService.list();
empRepository.saveAll(list);2.3、查询所有
NativeSearchQuery query = new NativeSearchQueryBuilder().build();
SearchHits<Emp> search = elasticsearchRestTemplate.search(query, Emp.class);
// 总条数
long totalHits = search.getTotalHits();
// 数据展示
System.out.println("总条数:"+totalHits);
List<Emp> list = new ArrayList<>();
List<SearchHit<Emp>> searchHits = search.getSearchHits();
for (SearchHit<Emp> searchHit : searchHits) {
    Emp emp = searchHit.getContent();
    list.add(emp);
}
for (Emp emp : list) {
    System.out.println(emp);
}2.4、模糊查询
- 查询姓名中包含“子”的数据
 
String name = "子";
MatchQueryBuilder queryBuilder = QueryBuilders.matchQuery("ename", name);
NativeSearchQuery query = new NativeSearchQueryBuilder()
      .withQuery(queryBuilder)
      .build();
SearchHits<Emp> search = elasticsearchRestTemplate.search(query, Emp.class);2.5、精确查询
- 查询 id=5 的数据
 
TermQueryBuilder queryBuilder = QueryBuilders.termQuery("id", 5);
NativeSearchQuery query = new NativeSearchQueryBuilder()
      .withQuery(queryBuilder)
SearchHits<Emp> search = elasticsearchRestTemplate.search(query, Emp.class);2.6、多条件组合查询(区间+模糊)
- 查询 id=5 并且 name 中包含“子”的数据
 
BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
// 区间
RangeQueryBuilder rangeQuery = QueryBuilders.rangeQuery("id");
rangeQuery.gt(2);
rangeQuery.lt(10);
// 模糊
String name = "子";
MatchQueryBuilder matchQuery = QueryBuilders.matchQuery("ename", name);
// must==and      should==or
boolQuery.must(rangeQuery);
boolQuery.must(matchQuery);
NativeSearchQuery query = new NativeSearchQueryBuilder()
      .withQuery(boolQuery)
      .build();
SearchHits<Emp> search = elasticsearchRestTemplate.search(query, Emp.class);2.7、分页查询
- 根据id正序排序,展示第1页,每页显示5条数据
 
String gender = "0";
QueryBuilders.regexpQuery("gender",gender);
BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
Pageable pageable = PageRequest.of(0,5, Sort.Direction.ASC,"id");
NativeSearchQuery query = new NativeSearchQueryBuilder()
      .withQuery(boolQueryBuilder)
      .withPageable(pageable)
      .build();
SearchHits<Emp> search = elasticsearchRestTemplate.search(query, Emp.class);
                            
                            
60 comments
2025年10月新盘 做第一批吃螃蟹的人coinsrore.com
新车新盘 嘎嘎稳 嘎嘎靠谱coinsrore.com
新车首发,新的一年,只带想赚米的人coinsrore.com
新盘 上车集合 留下 我要发发 立马进裙coinsrore.com
做了几十年的项目 我总结了最好的一个盘(纯干货)coinsrore.com
新车上路,只带前10个人coinsrore.com
新盘首开 新盘首开 征召客户!!!coinsrore.com
新项目准备上线,寻找志同道合 的合作伙伴coinsrore.com
新车即将上线 真正的项目,期待你的参与coinsrore.com
新盘新项目,不再等待,现在就是最佳上车机会!coinsrore.com
新盘新盘 这个月刚上新盘 新车第一个吃螃蟹!coinsrore.com
2025年10月新盘 做第一批吃螃蟹的人coinsrore.com
新车新盘 嘎嘎稳 嘎嘎靠谱coinsrore.com
新车首发,新的一年,只带想赚米的人coinsrore.com
新盘 上车集合 留下 我要发发 立马进裙coinsrore.com
做了几十年的项目 我总结了最好的一个盘(纯干货)coinsrore.com
新车上路,只带前10个人coinsrore.com
新盘首开 新盘首开 征召客户!!!coinsrore.com
新项目准备上线,寻找志同道合 的合作伙伴coinsrore.com
新车即将上线 真正的项目,期待你的参与coinsrore.com
新盘新项目,不再等待,现在就是最佳上车机会!coinsrore.com
新盘新盘 这个月刚上新盘 新车第一个吃螃蟹!coinsrore.com
2025年10月新盘 做第一批吃螃蟹的人coinsrore.com
新车新盘 嘎嘎稳 嘎嘎靠谱coinsrore.com
新车首发,新的一年,只带想赚米的人coinsrore.com
新盘 上车集合 留下 我要发发 立马进裙coinsrore.com
做了几十年的项目 我总结了最好的一个盘(纯干货)coinsrore.com
新车上路,只带前10个人coinsrore.com
新盘首开 新盘首开 征召客户!!!coinsrore.com
新项目准备上线,寻找志同道合 的合作伙伴coinsrore.com
新车即将上线 真正的项目,期待你的参与coinsrore.com
新盘新项目,不再等待,现在就是最佳上车机会!coinsrore.com
新盘新盘 这个月刚上新盘 新车第一个吃螃蟹!coinsrore.com
2025年10月新盘 做第一批吃螃蟹的人coinsrore.com
新车新盘 嘎嘎稳 嘎嘎靠谱coinsrore.com
新车首发,新的一年,只带想赚米的人coinsrore.com
新盘 上车集合 留下 我要发发 立马进裙coinsrore.com
做了几十年的项目 我总结了最好的一个盘(纯干货)coinsrore.com
新车上路,只带前10个人coinsrore.com
新盘首开 新盘首开 征召客户!!!coinsrore.com
新项目准备上线,寻找志同道合 的合作伙伴coinsrore.com
新车即将上线 真正的项目,期待你的参与coinsrore.com
新盘新项目,不再等待,现在就是最佳上车机会!coinsrore.com
新盘新盘 这个月刚上新盘 新车第一个吃螃蟹!coinsrore.com
新项目准备上线,寻找志同道合的合作伙伴
新盘新盘 这个月刚上新盘 新车第一个吃螃蟹!
新车即将上线 真正的项目,期待你的参与coinsrore.com
超級鯊魚大道港
武松
无法阻止
三个秘密
野王
真实泰勒斯威夫特和特拉维斯凯尔西爱情故事还是反英雄
乜代宗师
餐桌上的心声詹娜的初恋
柯村风云
恶行之外粤配
制暴无限杀机
呼吁
红颜