五、elasticsearch查询操作

这篇具有很好参考价值的文章主要介绍了五、elasticsearch查询操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

      

目录

数据准备

1、查询指定字段包含指定内容的文档

2、指定输出的文档字段查询(“_source”)

3、排序查询(默认根据指定字段升序asc排序)(“sort”)

4、分页查询

5、布尔查询(多条件查询)

6、数据过滤(“filter”)

7、精确查询(term)

8、两个类型text和keyword

9、高亮查询(“highlight”)

10、自定义高亮标签


        elasticsearch查询操作大致可分为以下几种(这些操作MySQL也可以做,但是在大数据量的情况下有可能会出现效率较慢的情况)而elasticsearch可以说是解决这种问题的灵丹妙药,为查询而生,特别是大数据量的模糊查询

匹配查询  match

按照条件查询 (must、must_not、should)

精确查询 (term)

区间范围查询(filer ->range)

匹配字段查询

多条件查询(布尔查询)

高亮查询 (highlight)

数据准备

使用kibana执行操作,将数据保存在elasticsearch中

PUT /book/_doc/1
{
  "name":"数据结构",
  "desc":"基础学习数据结构与算法",
  "price":15
}
PUT /book/_doc/2
{
  "name":"Java",
  "desc":"这是一本java基础学习",
  "price":40
}
PUT /book/_doc/3
{
  "name":"Linux",
  "desc":"服务器命令操作",
  "price":35
}
PUT /book/_doc/4
{
  "name":"c语言",
  "desc":"入门教程",
"price":20
}

查看索引详细信息,es帮着我们自动推断并设置了字段类型

五、elasticsearch查询操作

 五、elasticsearch查询操作

        在使用kabina时,输入关键字kibina会有提示,点击enter即可帮助我们自动补全API命令,但是注意如果输入了”_doc”则没有了提示

1、查询指定字段包含指定内容的文档

查询文档中name包含数据的文档记录

第一种方式GET  book/_doc/_search?q=name:数据

第二种方式
GET  book/_doc/_search
{
  "query": {
    "match":{
        "name": "数据"
    }
  }
}

五、elasticsearch查询操作

2、指定输出的文档字段查询(“_source”)

查询文档中name包含数据的文档记录,并只要查出文档记录的name和desc

GET  book/_doc/_search
{
  "query": {
    "match":{
        "name": "数据"
    }
  },
  "_source":["name","desc"]
}

五、elasticsearch查询操作

3、排序查询(默认根据指定字段升序asc排序)(“sort”)

查询desc包含学习的文档并根据价格排序

GET  book/_doc/_search
{
  "query": {
    "match":{
        "desc": "学习"
    }
  },
  "sort": [
    {
      "price": {
        "order":"desc"
      }
    }
  ]
}

五、elasticsearch查询操作

 4、分页查询

查询desc包含学习的文档,只要第一页的第一条

GET  book/_doc/_search
{
  "query": {
    "match":{
        "desc": "学习"
    }
  },
  "sort": [
    {
      "price": {
        "order":"desc"
      }
    }
  ],
  "from": 0,
  "size":1
}

五、elasticsearch查询操作

 数据下标还是从0开始的

5、布尔查询(多条件查询)

查询文档中desc包含学习且name包含数据的记录

must(and),所有条件都要match到才可以查询出来

GET  book/_doc/_search
{
  "query": {
    "bool":{
        "must": [
          {
             "match": {
               "desc": "学习"
              }
          },
           {
             "match": {
               "name": "数据"
              }
          }
      ]
    }
  }
}

五、elasticsearch查询操作

 相当于select * from book where desc=”学习” and name=”数据”;

should(or),只要match到其中一个条件即可查询出来

GET  book/_doc/_search
{
  "query": {
    "bool":{
        "should": [
          {
             "match": {
               "desc": "学习"
              }
          },
           {
             "match": {
               "name": "数据"
              }
          }
      ]
    }
  }
}

五、elasticsearch查询操作

 must_not(or),只要match到其中一个条件,文档记录都不会查询出来

GET  book/_doc/_search
{
  "query": {
    "bool":{
        "must_not": [
          {
             "match": {
               "desc": "学习"
              }
          },
           {
             "match": {
               "name": "数据"
              }
          }
      ]
    }
  }
}

五、elasticsearch查询操作

 文章来源地址https://www.toymoban.com/news/detail-491523.html

6、数据过滤(“filter”)

查询出desc不包含学习,name不包含数据的,价格大于等于18且小于30([18,30))的文档记录

GET  book/_doc/_search
{
  "query": {
    "bool":{
        "must_not": [
          {
             "match": {
               "desc": "学习"
              }
          },
          {
            "match": {
              "name": "数据"
              }
          }
      ],
      "filter": {
        "range": {
          "price":{
            "gte": 18,
             "lt": 30
          }
        }
      }
    }
  }
}

五、elasticsearch查询操作

gte(greater than equal) 大于等于
gt(greater than ) 大于
lte(less than equal) 小于等于  
 lt(less than ) 小于

7、精确查询(term)

term查询是直接根据倒排索引指定的词条进行精确查询

match会使用分词器解析,先分析文档,然后再通过分析的文档进行模糊查询

效率:term>match

term不会对查询条件进行分词

keyword不会对存储的数据进行分词

GET book/_doc/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "term": {
            "price": {
              "value": 20
            }
          }
        },
        {
           "term": {
            "price": {
              "value": 15
            }
          }
        }
      ]
    }
  }
}

五、elasticsearch查询操作

8、两个类型text和keyword

text:内容会被分词器解析

keyword: 内容不会被分词器解析,整体作为一个关键词

使用keyword作为analyzer,执行结果

五、elasticsearch查询操作

 

text内容整体作为一个关键词解析出来,不会被分词器拆开

使用standard作为analyzer

五、elasticsearch查询操作

 则会使用分词器将每个文字作为一个词解析出来

创建索引测试两个类型的区别

PUT testdb
{
  "mappings": {
    "properties": {
      "name":{
       "type" :"text"
      },
      "desc":{
        "type": "keyword"
      }
    }
  }
}

五、elasticsearch查询操作 五、elasticsearch查询操作

 同样把数据录入到elasticsearch中

PUT /testdb/_doc/1
{
  "name":"数据结构",
  "desc":"基础学习数据结构与算法",
  "price":15
}
PUT /testdb/_doc/2
{
  "name":"数据结构",
  "desc":"基础学习数据结构与算法2",
  "price":15
}

五、elasticsearch查询操作

 五、elasticsearch查询操作

 五、elasticsearch查询操作

 五、elasticsearch查询操作

9、高亮查询(“highlight”)

GET  book/_search
{
  "query": {
    "match": {
      "name": "数据"
    }
  },
  "highlight": {
    "fields": {
      "name": {}
    }
  }
}

五、elasticsearch查询操作

 默认把搜索条件匹配到的每个字加上<em>标签

10、自定义高亮标签

"pre_tags":定义标签前缀
"post_tags": 定义标签后缀

例如

GET  book/_search
{
  "query": {
    "match": {
      "name": "数据"
    }
  },
  "highlight": {
    "pre_tags": "<p class='key' style='color:red'>",
    "post_tags": "</p>", 
    "fields": {
      "name": {}
    }
  }
}

五、elasticsearch查询操作 

 

到了这里,关于五、elasticsearch查询操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • elasticsearch查询操作(语句方式)

    说明:本文介绍在kibana,es的可视化界面上对文档的查询操作; 先使用API,创建索引库,并且把数据从MySQL中查出来,传到ES上,参考(elasticsearch操作(API方式)) 索引库(student)结构; 模糊查询,是指字段类型是“text”,参与分词的字段,如name、all字段; (1)全部查询

    2024年02月04日
    浏览(39)
  • ElasticSearch常用查询操作

         一般我们使用ES最多的就是查询,今天就讲一下ES的查询。这里我是建了一个person的索引。 1.查询所有数据并进行排序 说明:这里是一个GET请求,person代表索引,_search表示搜索(固定写法)。 \\\"query\\\"表示查询。“match_all”表示查询所有。后面的sort就表示要对查询结果进行

    2024年02月11日
    浏览(45)
  • ElasticSearch:查询操作合集

    先看下我的数据: 1、查询所有文档: 或者 2、匹配查询: match匹配类型查询,会把查询条件进行分词,然后进行查询,多个词条之间是or的关系 3、字段匹配查询: multi_match 与match类似,不同的是它可以在多个字段中查询。 4、精准查询: 这个term查询不对查询条件进行

    2024年04月23日
    浏览(32)
  • 五、elasticsearch查询操作

           目录 数据准备 1、查询指定字段包含指定内容的文档 2、指定输出的文档字段查询(“_source”) 3、排序查询(默认根据指定字段升序asc排序)(“sort”) 4、分页查询 5、布尔查询(多条件查询) 6、数据过滤(“filter”) 7、精确查询(term) 8、两个类型text和keywor

    2024年02月09日
    浏览(23)
  • elasticsearch查询操作(API方式)

    说明:elasticsearch查询操作除了使用DSL语句的方式(参考:elasticsearch查询操作(语句方式)),也可以使用API的方式。 使用前需先导入依赖 创建一个测试类,查询操作代码都写在测试类里面,首先先建立RestHighLevelClient的连接 (1)全部查询; 查询student索引库的所有文档;

    2024年02月14日
    浏览(38)
  • Elasticsearch查询结果高亮操作实战

    在进行搜索时,搜索出的内容中的会显示不同的颜色,称之为高亮 百度搜索\\\"狂飙\\\",如下所示: 或者在淘宝搜索“手机”,如下所示: 我们可以发现搜索的在搜索到的信息上都变成了红色高亮 通过开发者工具查看高亮数据的html代码实现: Elastic

    2024年02月12日
    浏览(72)
  • 七、ElasticSearch-高级查询操作三

    在进行搜索时,搜索出的内容中的会显示不同的颜色,称之为高亮。 Elasticsearch 可以对查询内容中的部分,进行标签和样式 ( 高亮 ) 的设置。 在使用 match 查询的同时,加上一个 highlight 属性: pre_tags :前置标签 post_tags :后置标签 fields :需要高亮的字段

    2023年04月08日
    浏览(33)
  • 初识ElasticSearch(5) -批量操作之bulk | 条件查询 | 其它查询

    本系列笔记结合HTTP请求(使用postman调用,源文件见GitHub)和ElasticsearchRestTemplate进行调用学习 ElasticsearchRestTemplate封装了RestHighLevelClient,有些场景还得用RestHighLevelClient来操作 版本说明:使用的SpringBoot-2.3.5,对应的ElasticSearch-7.6.2;所以还是可以用RestHighLevelClient ElasticSearch-7

    2023年04月08日
    浏览(76)
  • Elasticsearch入门之Http操作(高级查询)

    Http操作: 高级查询: 高级查询:Elasticsearch 提供了基于 JSON 提供完整的查询 DSL 来定义查询 初始化数据: 查询所有文档: 在 Postman 中,向 ES 服务器发 GET 请求 :http://172.18.20.254:9200/shopping/_search 返回值: 返回值解释: 匹配查询: match 匹配类型查询,会把查询条件进行分词

    2024年02月02日
    浏览(43)
  • (十)ElasticSearch高级使用【别名,重建索引,refresh操作,高亮查询,查询建议】

    在开发中,随着业务需求的迭代,较⽼的业务逻辑就要⾯临更新甚⾄是重构,⽽对于es来说,为了 适应新的业务逻辑,可能就要对原有的索引做⼀些修改,⽐如对某些字段做调整,甚⾄是重建索 引。⽽做这些操作的时候,可能会对业务造成影响,甚⾄是停机调整等问题。由此

    2024年02月02日
    浏览(72)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包