Elasticsearch ES 简单查询 Query String Search 入门

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

带条件查询

GET test_mapping_manual1/_search?q=name:hello
GET test_mapping_manual1/_search?from=0&size=3&sort=age:asc

尝试了text类型排序需要特别处理下. "reason" : "Text fields are not optimised for operations that require per-document field data like aggregations and sorting, so these operations are disabled by default. Please use a keyword field instead. Alternatively, set fielddata=true on [name] in order to load field data by uninverting the inverted index. Note that this can use significant memory."

这种查询方式是创建索引的字段都会被检索

GET test_mapping_manual1/_search?q=hell
关闭字段索引,在mapping中设置
"cloName": {
"type": "text",
"index": false
}

全文检索 Fulltext search

match

GET test_mapping_manual1/_search
{
  "query": {
    "match": {
      "name": "John Smith"
    }
  }
}
# name包含John或者Smith都会被检索出来即这里对搜索词做了分词,且对source data也做了分词

这种把条件放到json体中

GET test_mapping_manual1/_search
{
  "query": {
    "match": {
      "name": "keyword1 keyword2 keyword2"
    }
  }
}
# 上边查询的含义是任何包含关键字 keyword1 或者 keyword2 或者keyword3都会查询出来
# 前提是设置好分词器,如果中文使用英文分词器可能会存在问题
# 查询结构顺序按照_score进行排序,内部排序算法是bm25

查询结果会统计命中几个关键字

match_all

# 查询所有全部数据
GET test_mapping_manual1/_search
{
  "query": {
    "match_all": {
      
    }
  }
}
# 等同于
GET test_mapping_manual1/_search

# 查询集群所有数据
GET _search

multi_match

# 这段含义是在字段name和desc中查找包含"John或者IT的内容的
GET test_mapping_manual1/_search
{
  "query": {
    "multi_match": {
      "query": "John IT",
      "fields": ["name","desc"]
    }
  }
}
# 语义: 默认分词器的对`John Smith`的分词结果为`John`和`Smith`
# name.last 中包含 `John` 或者 `Smith`  
# OR  
# name.first 中包含 `John` 或者 `Smith` 
# 如果设置了"operator": "and",则中间 OR 的关系变为 AND
GET teacher/_search
{
  "query": {
    "multi_match": {
      "query": "John Smith",
      "type": "most_fields",
      "fields": [
        "name.last",
        "name.first"
      ]
      // ,"operator": "and"
    }
  }
}


match_phrase

短语搜索

短语搜索内部原理是先分词,分词之后需要命中每个分词,并且顺序要一直

# 这段含义先把name查询条件分词为John 和Tim
# 然后去source中把name字段的内容分词
# 分词之后需要同时命中John 和Tim并且顺序要一致
GET test_mapping_manual1/_search
{
  "query": {
    "match_phrase": {
      "name": "John Tim"
    }
  }
}

验证分词

GET _analyze
{
  "analyzer": "standard",
  "text": "John Sam desc IT"
}

exact match

使用关键字term

term不会对搜索词分词

记住分词分两个部分,搜索词分词和源数据分词

keyword是不对source data的值分词

match_phase是分词的

所以重点来了:

如果搜索词部分词,但是source data内容分词了,这时是无法查询数据的,因为建索引的时候索引已经分词了; 另外还需要注意一点一个字段要被搜索到一定要被索引到文章来源地址https://www.toymoban.com/news/detail-578602.html

GET test_mapping_manual1/_search
{
  "query": {
    "term": {
      "name": "John Smith"
    }
  }
}
# 测试数据1
POST test_mapping_manual1/_doc
{
  "name": "John Smith",
  "age": 18,
  "desc": "IT phone"
}
# 此案例无法查询出数据

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

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

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

相关文章

  • 【ElasticSearch-基础篇】ES高级查询Query DSL术语级别查询并结合springboot使用

    Elasticsearch 提供了基于 JSON 的完整 Query DSL(Domain Specific Language)来定义查询。 因Query DSL是利用Rest API传递JSON格式的请求体(RequestBody)数据与ES进行交互,所以我们在使用springboot的时候也可以很方便的进行集成,本文主要讲述的就是使用springboot实现各类DSL的语法查询。 Elastics

    2024年02月01日
    浏览(11)
  • ElasticSearch系列 - SpringBoot整合ES:查询条件 query 和过滤条件 filter 的区别

    01. Elasticsearch 查询条件和过滤条件的区别? Elasticsearch中的查询条件和过滤条件都是用于搜索和过滤文档的条件,但它们之间有一些区别。 查询条件是用于计算文档相关度得分的条件,它会将所有符合条件的文档按照相关度得分从高到低排序,并返回前N个文档。查询条件可以

    2024年02月14日
    浏览(12)
  • ElasticSearch中查询语句用法(match、match_phrase、multi_match、query_string)

    ElasticSearch中查询语句用法(match、match_phrase、multi_match、query_string)

    略 1.1 不同字段权重         如果需要为不同字段设置不同权重,可以考虑使用 bool 查询的 should 子句来组合多个 match 查询,并为每个 match 查询设置不同的权重。         上面的查询将在 product_name 字段和 description 字段中搜索包含 \\\"apple\\\" 的文档,并为 product_name 字段设

    2024年02月10日
    浏览(12)
  • ElasticSearch第六讲 ES 三种分页查询from+size / Scroll /search_after

    我的Git地址:https://gitee.com/ITLULU 欢迎访问 ES的分页查询和关系数据库的分页查询的区别: ES分页查询有以下几种: 1:简单的 from size (有默认的最大Size,不可无限大小查询,因为数据过多查询性能会降低,且也要考虑内存问题,以及OS缓存数据的能力) 2: scroll基于查询窗口

    2024年02月01日
    浏览(11)
  • 【ES】Elasticsearch 常见的简单查询

    【ES】Elasticsearch 常见的简单查询

    查看es中有哪些索引 请求方式:GET 请求地址: http://localhost:9200 /_cat/indices?v 参数:无 结果: 查看索引全部数据 请求方式:GET 请求地址:http://localhost:9200/index-2023-08/_search 参数: 结果:  查询多1个数据 请求方式:GET 请求地址:http://localhost:9200/index-2023-08/_search 解释:http:

    2024年02月07日
    浏览(16)
  • es通过rest接口_search、_delete_by_query查询与删除数据

    es通过rest接口_search、_delete_by_query查询与删除数据

    1、rest接口查询数据 rest查询: http://localhost:9200/index_name/_search 查询表达式: postman请求截图: 2、使用Rest接口删除数据 rest删除数据: http://localhost:9200/index_name/_delete_by_query 查询表达式: postman请求截图:

    2024年02月16日
    浏览(12)
  • Elasticsearch从入门到精通-05ES匹配查询

    Elasticsearch从入门到精通-05ES匹配查询

    👏作者简介:大家好,我是程序员行走的鱼 📖 本篇主要介绍和大家一块学习一下ES各种场景下的匹配查询,有助于我们在项目中进行综合使用 创建索引并指定ik分词器: 添加数据: 需要搜索的document中的remark字段包含java和developer词组 上述语法中,如果将operator的值改为or。则与

    2024年03月27日
    浏览(12)
  • ElasticSearch入门:使用ES来实现模糊查询功能

    本文针对在工作中遇到的需求:通过es来实现 模糊查询 来进行总结;模糊查询的具体需求是:查询基金/A股/港股等金融数据,要求可以根据 字段 , 拼音首字母 , 部分拼音全称 进行联想查询;需要注意的是,金融数据名称中可能不止包含汉字,还有英文,数字,特殊字符等

    2023年04月09日
    浏览(13)
  • Elasticsearch Boolean Query查询介绍

    前言 ES 和 Solr 的底层都是基于Apache Lucene 实现,bool 查询的底层实现是Lucene 的 BooleanQuery,其可以组合多个子句查询,类似 SQL 语句里面的 OR 查询。 查询介绍 在 ES 里面 Boolean 查询封装了 4 种 API 接口能力,可以单独使用,也可以组合使用,总结如下: 函数 描述 must query 关键

    2024年02月13日
    浏览(35)
  • 【ElasticSearch系列-03】ElasticSearch的高级句法查询Query DSL

    【ElasticSearch系列-03】ElasticSearch的高级句法查询Query DSL

    ElasticSearch系列整体栏目 内容 链接地址 【一】ElasticSearch下载和安装 https://zhenghuisheng.blog.csdn.net/article/details/129260827 【二】ElasticSearch概念和基本操作 https://blog.csdn.net/zhenghuishengq/article/details/134121631 【二】ElasticSearch的高级查询Query DSL https://blog.csdn.net/zhenghuishengq/article/details/1

    2024年02月06日
    浏览(16)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包