精华内容
下载资源
问答
  • python3查询es数据并导出cvs代码展示 代码展示 from elasticsearch import Elasticsearch import csv # 获取es数据库 ES = [ 'http://192.168.1.111:9200' ] es = Elasticsearch(ES) ''' 查询所有数据并导出 ''' ...

    python3查询es数据并导出csv

    代码展示

    from elasticsearch import Elasticsearch
    import csv
    # 获取es数据库
    ES = [
        'http://192.168.1.111:9200'
    ]
    es = Elasticsearch(ES)
    '''
        查询所有数据并导出
    '''
    def ExportCsv():
        body = {
          # "query": {
          #   "match": {"name": "张三"},
          # }
        }
        query = es.search(index='lagou',body=body,scroll='5m',size=1000)
        # es查询出的结果第一页
        results = query['hits']['hits']
        # es查询出的结果总量
        total = query['hits']['total']["value"]
        # 游标用于输出es查询出的所有结果
        scroll_id = query['_scroll_id']
    
        for i in range(0, int(total/100)+1):
            # scroll参数必须指定否则会报错
            query_scroll = es.scroll(scroll_id=scroll_id,scroll='5m')['hits']['hits']
            results += query_scroll
    
        with open('./test.csv', 'w', newline='', encoding="utf_8_sig") as flow:
            csv_writer = csv.writer(flow)
            for res in results:
                csvrow1=[]
                csvrow1.append( res['_id'] )
                csvrow1.append( res["_source"]['name'] )
                csv_writer.writerow(csvrow1)
        print('done!')
    
    ExportCsv()
    
    
    展开全文
  • 使用postman查询es数据

    千次阅读 2020-07-30 11:16:35
    使用postman查询Elasticsearch数据 之前没有用过es,同事临时叫我帮忙导出一下数据,而且还比较急。在导出过程中用了很多方法,出现了很多问题,主要是没有了解过es这个东西。...5、因为es查询默认只查询几条数据,如果

    使用postman查询Elasticsearch数据

    之前没有用过es,同事临时叫我帮忙导出一下数据,而且还比较急。在导出过程中用了很多方法,出现了很多问题,主要是没有了解过es这个东西。其他就不多说了。

    方式一:在java代码中查看es的查询条件,然后通过postman发送请求
    1、通过ide debug模式获取es的查询条件
    在这里插入图片描述
    2、打开postman,在拼好查询地址,输入用户名和地址
    在这里插入图片描述

    3、把1步骤复制的查询条放到postman中去
    在这里插入图片描述

    4、点击send,查看结果

    5、因为es查询默认只查询几条数据,如果需要查询大量结果可以在查询条件中拼上一个size
    在这里插入图片描述

    展开全文
  • 之前在CSDN也发现了一些springboot+mybatis+es-sql查询es数据的博客,不过看到的博客是基于配置文件的,所以写一篇基于注解的 pom.xml文件说明 <!-- 版本根据自己的情况写就好了 --> <mybatis-plus.version...

    之前在CSDN也发现了一些springboot+mybatis+es-sql查询es数据的博客,不过看到的博客是基于配置文件的,所以写一篇基于注解的

    pom.xml文件说明

    <!-- 版本根据自己的情况写就好了 -->
    <mybatis-plus.version>3.3.0</mybatis-plus.version>
    <es-sql.version>6.8.8</es-sql.version>
    <dynamic-ds.version>2.2.3</dynamic-ds.version>
    <!-- ---------------分隔符-------------------- -->
    <!-- mybatis -->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>${mybatis-plus.version}</version>
    </dependency>
    <!-- es sql-->
    <dependency>
        <groupId>org.elasticsearch.plugin</groupId>
        <artifactId>x-pack-sql-jdbc</artifactId>
        <version>${es-sql.version}</version>
    </dependency>
    <!-- 动态数据源 -->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
        <version>${dynamic-ds.version}</version>
    </dependency>
    

    注意:x-pack-sql-jdbc版本需要与es版本匹配(这个还不做兼容,真的坑)。然后maven中央仓库的x-pack-sql-jdbc版本目前发现是在6.8.11以上的(也就是说6.8.11一下的你找不到,巨坑),所以你需要加一个elasitc的仓库去下载jar包

    <repositories>
       <repository>
            <id>elastic.co</id>
            <url>https://artifacts.elastic.co/maven</url>
        </repository>
    </repositories>
    

    application.yml文件及说明

    spring:
      datasource:
        dynamic:
          primary: master #设置默认的数据源或者数据源组,默认值即为master
          strict: false #设置严格模式,默认false不启动. 启动后在未匹配到指定数据源时候会抛出异常,不启动则使用默认数据源.
          datasource:
            master:
              # 数据库连接,看自己项目
            es:
              url: jdbc:es://http://${ES_HOST}:${ES_PORT}/
              driver-class-name: org.elasticsearch.xpack.sql.jdbc.EsDriver
              type: org.springframework.jdbc.datasource.DriverManagerDataSource
    

    Mapper

    @DS("es")
    @Mapper
    public interface ESMapper {
    
        @Select("${sql}")
        Map<String, Object> selectMap(Map<String, String> params);
    
    }
    

    测试:

    @Resource
    private ESMapper esMapper;
    public void test(){
        Map<String, String> map = new HashMap<>();
        map.put("sql", "select * from ddp_session_66537_202104 limit 1");
        System.err.println(esMapper.selectMap(map));
        // 输出: {eid=z, reason=}
    }
    
    展开全文
  • 后端查询es数据

    2021-06-08 10:59:35
    一、构建es连接 本次我们通过RestClien来连接es服务端,代码很简单,就不废话了,直接上代码: HttpHost httpHost1 = new HttpHost("192.168.1.100", 8000, "http"); HttpHost httpHost2 = new HttpHost("192....

    一、构建es连接

    本次我们通过RestClien来连接es服务端,代码很简单,就不废话了,直接上代码:

     		HttpHost httpHost1 = new HttpHost("192.168.1.100", 8000, "http");
            HttpHost httpHost2 = new HttpHost("192.168.1.101", 8000, "http");
            HttpHost httpHost3 = new HttpHost("192.168.1.102", 8000, "http");
            HttpHost httpHost4 = new HttpHost("192.168.1.103", 8000, "http");
            HttpHost httpHost5 = new HttpHost("192.168.1.104", 8000, "http");
    
            // 创建es链接
            RestClientBuilder builder = RestClient.builder(httpHost1, httpHost2, httpHost3, httpHost4, httpHost5);
            RestHighLevelClient restHighLevelClient = new RestHighLevelClient(builder);
    

    备注:以上连接的是es集群,如果连接单个es服务端,只需要创建一个HttpHost即可

    二、创建查询条件

    同样很简单,老规矩上代码:

    		// 开始查询数据
            SearchRequest searchRequest = new SearchRequest("index-2021.06.08");
            SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
            // 构造查询条件
            BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
            // 查询所有数据
            MatchAllQueryBuilder matchAllQueryBuilder = QueryBuilders.matchAllQuery();
    
            boolQueryBuilder.must(matchAllQueryBuilder);
            searchSourceBuilder.query(boolQueryBuilder);
            // 查询10条
            searchSourceBuilder.size(10);
            searchRequest.source(searchSourceBuilder);
    

    三、查询es数据

    这个过程更简单,只需要把创建好的条件传入我们之前构建的es连接即可,代码如下:

    		try {
                // 条件构造完毕,开始查询es
                SearchResponse search = restHighLevelClient.search(searchRequest);
                LOGGER.info("查询原始数据为:{}", search);
    
                //取出具体业务数据
                List<String> list = Arrays.asList(search.getHits().getHits())
                        .stream()
                        .map(SearchHit::getSourceAsString)
                        .collect(Collectors.toList());
                LOGGER.info("业务数据大小:{}  业务数据:{}", list.size(), list);
            } catch (Exception e) {
                LOGGER.error("es查询异常:{}", e.getMessage());
            }
    

    四、数据验证

    通过以上三个步骤我们就可以拿到我们放到es服务端的数据啦,所有不贴运行结果的代码都是耍流氓,所以请看:
    验证结果
    完整代码:

    package com.kingmouse.es.book;
    
    import org.apache.http.HttpHost;
    import org.elasticsearch.action.search.SearchRequest;
    import org.elasticsearch.action.search.SearchResponse;
    import org.elasticsearch.client.RestClient;
    import org.elasticsearch.client.RestClientBuilder;
    import org.elasticsearch.client.RestHighLevelClient;
    import org.elasticsearch.index.query.BoolQueryBuilder;
    import org.elasticsearch.index.query.MatchAllQueryBuilder;
    import org.elasticsearch.index.query.QueryBuilders;
    import org.elasticsearch.search.SearchHit;
    import org.elasticsearch.search.builder.SearchSourceBuilder;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    import java.util.Arrays;
    import java.util.List;
    import java.util.stream.Collectors;
    
    /**
     * Created with IntelliJ IDEA
     *
     * @auther kingMouse
     * @date 2021/6/8 10:31 上午
     * Description: 后端查询es服务端数据demo
     */
    
    public class Esdemo {
    
        private static final Logger LOGGER = LoggerFactory.getLogger(Esdemo.class);
    
        public static void main(String[] args) {
            HttpHost httpHost1 = new HttpHost("192.168.1.100", 8000, "http");
            HttpHost httpHost2 = new HttpHost("192.168.1.101", 8000, "http");
            HttpHost httpHost3 = new HttpHost("192.168.1.102", 8000, "http");
            HttpHost httpHost4 = new HttpHost("192.168.1.103", 8000, "http");
            HttpHost httpHost5 = new HttpHost("192.168.1.104", 8000, "http");
    
            // 创建es链接
            RestClientBuilder builder = RestClient.builder(httpHost1, httpHost2, httpHost3, httpHost4, httpHost5);
            RestHighLevelClient restHighLevelClient = new RestHighLevelClient(builder);
    
            // 开始查询数据
            SearchRequest searchRequest = new SearchRequest("index-2021.06.08");
            SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
            // 构造查询条件
            BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
            // 查询所有数据
            MatchAllQueryBuilder matchAllQueryBuilder = QueryBuilders.matchAllQuery();
    
            boolQueryBuilder.must(matchAllQueryBuilder);
            searchSourceBuilder.query(boolQueryBuilder);
            // 查询10条
            searchSourceBuilder.size(10);
            searchRequest.source(searchSourceBuilder);
    
            try {
                // 条件构造完毕,开始查询es
                SearchResponse search = restHighLevelClient.search(searchRequest);
                LOGGER.info("查询原始数据为:{}", search);
    
                //取出具体业务数据
                List<String> list = Arrays.asList(search.getHits().getHits())
                        .stream()
                        .map(SearchHit::getSourceAsString)
                        .collect(Collectors.toList());
                LOGGER.info("业务数据大小:{}  业务数据:{}", list.size(), list);
            } catch (Exception e) {
                LOGGER.error("es查询异常:{}", e.getMessage());
            }
        }
    }
    

    什么?你要带条件的查询?ok,满足你们,上代码:

    		// 开始查询数据
            SearchRequest searchRequest = new SearchRequest("index-2021.06.08");
            SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
            // 构造查询条件
            BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
          
            // 查询请求时间在2021-06-08 08:00:00~2021-06-08 09:00:00之间的数据
            RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery("reqTime.keyword")
                    .gt("2021-06-08 08:00:00").lt("2021-06-08 09:00:00");
            // 查询状态是success的数据
            MatchQueryBuilder matchQueryBuilder = QueryBuilders.matchQuery("status.keyword","success");
    
            // must表示各条件之间是and的关系
            boolQueryBuilder.must(rangeQueryBuilder);
            boolQueryBuilder.must(matchQueryBuilder);
            searchSourceBuilder.query(boolQueryBuilder);
            // 查询10条
            searchSourceBuilder.size(10);
            searchRequest.source(searchSourceBuilder);
    

    查询结果:
    带条件的查询

    展开全文
  • kibana查询es数据记录

    2020-11-03 19:46:08
    已经有一段时间没有更新博客信息了,最近刚从北京出差回来,老电脑已经被我放置了快一年的时间没有使用,现在要同步所有...查询名为pms,type为product的index的数据信息 GET pms/product/_search { "size": 20, "q
  • linux命令行查询es数据

    万次阅读 2017-07-22 10:58:50
    1、查询gather-005中 NAME='Lihua' curl -XGET 'localhost:9200/gather-005/_search?pretty' -H 'Content-Type:application/json' -d' {  "query":{  "match":{  "NAME":"...
  • KIbana查询ES数据的基本使用

    千次阅读 2021-02-15 20:28:00
    使用Dev 查询 GET /_cat/indices?v 多添加几个数据 PUT /user/userinfo/1 { "name": "李四", "city": "成都", "age":30, "description": "李四是美籍华人" } PUT /user/userinfo/2 { ...
  • Java 根据条件分页查询 Es数据

    千次阅读 2019-03-26 12:53:24
    QueryBuilder 简单查询简单查询可以参考我的另一篇博客https://blog.csdn.net/qq_36189144/article/details/88708684 public ResultData select(List<Long> longList,Integer pageIndex,Integer pageSize, ...
  • 在将此解压 ,然后把文件夹拖入拓展程序即可 如果查询数据查不到,报错 { “error” : “Content-Type header [application/x-www-form-urlencoded] is not supported”, “status” : 406 } 解决方法: 修改vendor...
  • //language=JSON5 String str = "{\n" + " \"match_all\": {}\n" + "}"; WrapperQueryBuilder wrapperQueryBuilder = QueryBuilders.wrapperQuery(str); // 执行搜索 使用elasticsearc...
  • es数据查询

    2020-09-07 20:42:08
    RestHighLevelClient restHighLevelClient = new RestHighLevelClient(builder); final SearchSourceBuilder sourceBuilder = SearchSourceBuilder.searchSource(); BoolQueryBuilder boolQue.
  • 深入理解es数据写入-查询数据-删除数据 ​ 最近面试了很多的同学,看到很多同学的简历里面都写了es相关的技术栈,但是大部分都停留在es的基本api的使用上,对于es的实现原理或者线上的一些基本的事故的解决方案都不是很...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,831
精华内容 1,532
关键字:

查询es数据