jest操作 Elasticsearch
package com.lgmall.search; import com.lgmall.search.esEntity.Article;
import com.lgmall.search.esEntity.Movie;
import io.searchbox.client.JestClient;
import io.searchbox.core.Index;
import io.searchbox.core.Search;
import io.searchbox.core.SearchResult;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.MatchQueryBuilder;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner; import java.io.IOException;
import java.util.List; @RunWith(SpringRunner.class)
@SpringBootTest
public class SearchApplicationTests { @Autowired
private JestClient jestClient; /**
* 利用jest来操作elasticSearch
*/
@Test
public void testEs() { // 新增数据
Article article = new Article();
article.setAuthor("易中天");
article.setPrice(1000);
article.setPrice(1);
Index build = new Index.Builder(article).index("lg").type("article").build(); try {
jestClient.execute(build);
} catch (IOException e) {
e.printStackTrace();
} } // 利用jest来查询数据 (字符串拼接的查询参数)
@Test
public void getEsMessage() { String searchStr = "{\n" +
" \"query\": {\n" +
" \"match\": {\n" +
" \"author\": \"易\"\n" +
" }\n" +
" }\n" +
"}"; // 如果查询字符串是空的话,则代表查询所有的数据,也可以指定查询字符串
Search search = new Search.Builder("").addIndex("lg").addType("article").build(); try {
SearchResult searchResult = jestClient.execute(search); List<SearchResult.Hit<Article, Void>> hits = searchResult.getHits(Article.class); for (SearchResult.Hit<Article, Void> hit : hits) {
Article article = hit.source;
System.out.println(article.getAuthor());
} } catch (IOException e) {
e.printStackTrace();
} } /**
* 利用java代码来封装查询参数
*/
@Test
public void getEsMessage02() throws IOException { SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); // TODO bool start
BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder(); // 数组过滤
//ArrayList<Integer> ins = new ArrayList<>();
//ins.add(13);
//ins.add(40);
//TermsQueryBuilder score = new TermsQueryBuilder("score", ins); // 单个查询
//TermQueryBuilder score = new TermQueryBuilder("score", 13); //TermQueryBuilder score = new TermQueryBuilder("score", 13);
//boolQueryBuilder.filter(score);
//
//TermQueryBuilder score1 = new TermQueryBuilder("score", 40);
//boolQueryBuilder.filter(score1); MatchQueryBuilder matchQueryBuilder = new MatchQueryBuilder("name","我想查找海洋天堂或者是战狼电影");
//MatchAllQueryBuilder matchAllQueryBuilder = new MatchAllQueryBuilder(); //获取所有的数据 // must
boolQueryBuilder.must(matchQueryBuilder); // TODO bool stop // from
searchSourceBuilder.from(0); // size
searchSourceBuilder.size(10); HighlightBuilder highlightBuilder = new HighlightBuilder();
highlightBuilder.preTags("<p style='color=red'>");
highlightBuilder.postTags("</p>");
// highLight
searchSourceBuilder.highlighter(highlightBuilder); // TODO 封装bool
searchSourceBuilder.query(boolQueryBuilder); String queryString = searchSourceBuilder.toString(); System.out.println(queryString); Search search = new Search.Builder(queryString).addIndex("move").addType("c_move").build(); try {
SearchResult result = jestClient.execute(search);
List<SearchResult.Hit<Movie, Void>> hits = result.getHits(Movie.class); for (SearchResult.Hit<Movie, Void> hit : hits) {
Movie source = hit.source;
System.out.println(source.getName());
} } catch (IOException e) {
e.printStackTrace();
} } }
jest操作 Elasticsearch的更多相关文章
- 【Es】jest操作elasticsearch
https://blog.csdn.net/niuchenliang524/article/details/82869319 操作es的客房端有多个,在此例出三种(具体区别自行百度),本文讲的是jes ...
- 使用curl命令操作elasticsearch
使用curl命令操作elasticsearch 大岩不灿 发表于 2015年4月25日 浏览 7,426 次 第一:_cat系列_cat系列提供了一系列查询elasticsearch集群状态的接口.你 ...
- 使用Java客户端操作elasticsearch(二)
承接上文,使用Java客户端操作elasticsearch,本文主要介绍 常见的配置 和Sniffer(集群探测) 的使用. 常见的配置 前面已介绍过,RestClientBuilder支持同时提供一 ...
- java操作elasticsearch实现组合桶聚合
1.terms分组查询 //分组聚合 @Test public void test40() throws UnknownHostException{ //1.指定es集群 cluster.name 是 ...
- java操作elasticsearch实现query String
1.CommonTersQuery: 指定字段进行模糊查询 //commonTermsQuery @Test public void test35() throws UnknownHostExcept ...
- java操作elasticsearch实现聚合查询
1.max 最大值 //max 求最大值 @Test public void test30() throws UnknownHostException{ //1.指定es集群 cluster.name ...
- java操作elasticsearch实现前缀查询、wildcard、fuzzy模糊查询、ids查询
1.前缀查询(prefix) //prefix前缀查询 @Test public void test15() throws UnknownHostException { //1.指定es集群 clus ...
- java操作elasticsearch实现条件查询(match、multiMatch、term、terms、reange)
1.条件match query查询 //条件查询match query @Test public void test10() throws UnknownHostException { //1.指定e ...
- java操作elasticsearch实现查询删除和查询所有
后期博客本人都只给出代码,具体的说明在代码中也有注释. 1.查询删除 //查询删除:将查询到的数据进行删除 @Test public void test8() throws UnknownHostEx ...
随机推荐
- The Linux usage model for device tree data
Linux and the Device Tree The Linux usage model for device tree data Author: Grant Likely grant.like ...
- 圆角Panel
using System; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostic ...
- leetcode 142. 环形链表 II(c++)
给定一个链表,返回链表开始入环的第一个节点. 如果链表无环,则返回 null. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始). 如果 pos 是 - ...
- Oracle编程艺术--配置环境
如何设置login.sql,参照了本书作者的意见,我也大概弄明白了 只是该文件的存放位置一直就出错,百度了很久,说是$ORACLE_HOME/sqlplus/admin/glogin.sql(默认)于 ...
- Linux 下在后台运行进程:nohup,setsid,& 以及 tmux
参考: Linux 技巧:让进程在后台可靠运行的几种方法 ssh 登录了远程服务器时,如果在前台运行耗时较长的任务, 当 ssh 掉线或关闭窗口时会导致命令停止运行. hup 与 nohup 当用户注 ...
- 【ABAP系列】SAP LSMW(摘自官网)
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP LSMW(摘自官网) 前 ...
- 解决sql语句中参数为空(null)不会更新参数的问题
用的mybatis自动生成的 情景: 修改页面中,修改某个字段,修改前有数据,修改后为空. mybatis中一般用到 如:(这种直接忽略为空的字段,不能更新空字段参数) <update id=& ...
- sqluldr2 oracle直接导出数据为文本的小工具使用
近期客户有需求,导出某些审计数据,供审计人进行核查,只能导出成文本或excel格式的进行查看,这里我们使用sqluldr2工具进行相关数据的导出. oracle导出数据为文本格式比较麻烦,sqluld ...
- nginx-->基本使用
Nginx基本使用 一.下载 http://nginx.org/en/download.html 二.解压文件 在当前文件夹下通过终端就可以操作nginx nginx -v 三.配置详解 #use ...
- JMeter学习笔记16-如何输出HTML格式的性能测试报告
文本来学习下,如何输入HTML格式的JMeter测试报告.前面已经介绍, 如果要做性能测试,需要在GUI上设计好你的Test Plan,设置各种场景和负载值,包括多少个线程,多少个用户,循环多少次.设 ...