ElasticSearch——Day03

ES Day 03

文章总结自B站狂神说Java

1. 花式查询

1.1传递参数查询

查询的参数体是一个JSON数据,封装到query对象里面。
调用_search方法执行查询,传入query对象;match为匹配查询;sort设置排序方式;_source用来添加要显示的字段(es中为文档)

GET newindex/_search
{
  "query": {
    "match": {
      "name": "梁朝伟"
    }
  },
  "sort": [
    {
      "age": {
        "order": "desc"
      }
    }
  ], 
  "_source": ["name"]
}

1.2分页查询

form为从第几条开始,size为每次显示几个。

GET newindex/_search
{
  "query": {
    "match": {
      "name": "梁朝伟"
    }
  },
  "sort": [
    {
      "age": {
        "order": "desc"
      }
    }
  ], 
  "_source": ["name"],
  "form": 0,
  "size": 2,
}

1.3 多条件查询

must的用法相当于MySQL中的and(查询必须名字为梁朝伟以及年龄为1岁);也可以使用must_not进行取反,就是查询与关键字不同的。多个相同字段的条件使用空格隔开。

GET newindex/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "name": "梁朝伟"
          }
        },  
        {
          "match": {
            "age": "1"
          }
        }
      ]
    }
  }
}

should相当于MySQL中的or
查询名字为梁朝伟或者年龄为1岁

GET newindex/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "match": {
            "name": "梁朝伟"
          }
        },  
        {
          "match": {
            "age": "1"
          }
        }
      ]
    }
  }
}

1.4过滤器

使用filter进行过滤,
lt 小于
lte 小于等于
gt 大于
gte 大于等于

GET newindex/_search
{
  "query": {
  	”match": {
  		"name": "梁朝伟"
  	},
  	"filter": {
  		”range":{
  			"age": {
  				"lt": 10
  			}
  		}  
	}
  }
}

1.5精确查找

term直接查询精确的,match会使用分词器解析

1.6 高亮查询

"highlight": {
	"pre_tags": "<p style = "color:red">"
	"post_tags:"</p>
	"fields": {
		"colum": {}
	}
}

2. SpringBoot整合ES

整合时要注意的是要将maven依赖中的es依赖版本与本地es客户端的版本一致。springboot2.5.x的默认版本是es6.8.x需要将es的版本修改

指定es依赖版本

<elasticsearch.version>7.6.1</elasticsearch.version>

es依赖,在使用idea创建springboot项目时在nosql中选上es也可以添加。

   <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
        </dependency>

2.1配置Es

@Configuration
public class ElasticSearchClientConfig {

    @Bean
    public RestHighLevelClient restHighLevelClient(){

        RestHighLevelClient client = new RestHighLevelClient(
                RestClient.builder(
                        new HttpHost("127.0.0.1",9200,"http")));
        return client;
    }


}

2.2 操作索引

2.2.1 创建索引
/**
     * 创建索引
     */
    @Test
    void testCreateIndex() throws IOException {
        // 创建索引请求
        CreateIndexRequest request = new CreateIndexRequest("java");
//      // 执行请求
        CreateIndexResponse createIndexResponse = restHighLevelClient.indices().create(request, RequestOptions.DEFAULT);

        System.out.println(createIndexResponse);
    }
2.2.2 获取索引
 /**
     * 获取索引
     */
    @Test
    void testGetIndex() throws IOException {
//        创建获取索引请求
        GetIndexRequest getIndexRequest = new GetIndexRequest("java");

//        发送获取索引请求
        boolean exists = restHighLevelClient.indices().exists(getIndexRequest, RequestOptions.DEFAULT);

        System.out.println(exists);

    }
2.2.3 删除索引
 /**
     * 删除索引
     */
    @Test
    void testDelIndex() throws IOException {
        DeleteIndexRequest request = new DeleteIndexRequest("java");
        AcknowledgedResponse delete = restHighLevelClient.indices().delete(request, RequestOptions.DEFAULT);
        System.out.println(delete);

    }

2.3 操作文档

2.3.1新建实体类:
@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
public class User {

    private String user;


    private Integer age;

}
2.3.2 新建文档
 /**
     * 添加文档
     */
    @Test
    void testAddDocument() throws IOException {
//        创建对象
        User user = new User("梁朝伟",29);
//        创建请求
        IndexRequest request = new IndexRequest("es_api");
//        创建规则
        request.id("1");
        request.timeout(TimeValue.timeValueSeconds(1));
//         将数据转为json
        IndexRequest source = request.source(JSON.toJSONString(user), XContentType.JSON);
//        发送请求
        IndexResponse index = restHighLevelClient.index(request, RequestOptions.DEFAULT);
        System.out.println(index.toString());
    }
2.3.3 获取文档
/**
     * 获取文档
     */
    @Test
    void testGetDocument() throws IOException {
        GetRequest request = new GetRequest("es_api","1");

        GetResponse getRequest = restHighLevelClient.get(request, RequestOptions.DEFAULT);

         System.out.println(getRequest.getSourceAsString());
    }
2.3.4 更新文档
 /**
     * 更新文档
     */
    @Test
    void testUpdateDocument() throws IOException {

        UpdateRequest request = new UpdateRequest("es_api","_doc","1");
        request.timeout("1s");

        User user = new User("吴彦祖",22);

        request.doc(JSON.toJSONString(user),XContentType.JSON);

        UpdateResponse update = restHighLevelClient.update(request,RequestOptions.DEFAULT);

        System.out.println(update);
    }

2.3.5 删除文档
	/**
     * 删除文档
     */
    @Test
    void testDelDocument() throws IOException {
        DeleteRequest request = new DeleteRequest("es_api","1");
        request.timeout("1s");
        DeleteResponse delete = restHighLevelClient.delete(request, RequestOptions.DEFAULT);
        System.out.println(delete);
    }
2.3.5 条件查询
 /**
     * 条件查询
     */
    @Test
    void testSearchDocument() throws IOException {

        SearchRequest request = new SearchRequest("es_api");

        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();

        TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("name","jiji");

        sourceBuilder.query(termQueryBuilder);

        sourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));

        request.source(sourceBuilder);

        SearchResponse search = restHighLevelClient.search(request,RequestOptions.DEFAULT);

        System.out.println(JSON.toJSONString(search.getHits()));

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值