Elasticsearch各种高级文档操作2

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

本文来记录下Elasticsearch各种文档操作


初始化文档数据

在进行各种文档操作之前,我们先进行初始化文档数据的工作

Elasticsearch各种高级文档操作2,Elastic Search,核心知识点,elasticsearch


模糊查询文档

概述

match 模糊查询返回包含与搜索字词相似的字词的文档。

编辑距离是将一个术语转换为另一个术语所需的一个字符更改的次数。这些更改可以包括:

操作 示例
更改字符 (box → fox)
删除字符 (black → lack)
插入字符 (sic → sick)
转置两个相邻字符 (act → cat)
  • 为了找到相似的术语,fuzzy 查询会在指定的编辑距离内创建一组搜索词的所有可能的变体或扩展。然后查询返回每个扩展的完全匹配。
  • 通过 fuzziness 修改编辑距离。一般使用默认值 AUTO,根据术语的长度生成编辑距离。

示例1

在 apifox 中,向 ES 服务器发 GET请求 :http://localhost:9200/person/_search,请求体内容为:

Elasticsearch各种高级文档操作2,Elastic Search,核心知识点,elasticsearch

服务器响应结果

{
    "took": 22,
    "timed_out": false,
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 3,
            "relation": "eq"
        },
        "max_score": 1.2039728,
        "hits": [
            {
                "_index": "person",
                "_type": "_doc",
                "_id": "1",
                "_score": 1.2039728,
                "_source": {
                    "name": "zhangsan",
                    "age": 20,
                    "sex": "男"
                }
            },
            {
                "_index": "person",
                "_type": "_doc",
                "_id": "2",
                "_score": 1.0534762,
                "_source": {
                    "name": "zhangsan1",
                    "age": 21,
                    "sex": "男"
                }
            },
            {
                "_index": "person",
                "_type": "_doc",
                "_id": "3",
                "_score": 1.0534762,
                "_source": {
                    "name": "zhangsan2",
                    "age": 22,
                    "sex": "男"
                }
            }
        ]
    }
}

示例2

在 apifox 中,向 ES 服务器发 GET请求 :http://localhost:9200/person/_search,请求体内容为:

Elasticsearch各种高级文档操作2,Elastic Search,核心知识点,elasticsearch

服务器响应结果

Elasticsearch各种高级文档操作2,Elastic Search,核心知识点,elasticsearch


示例3

在 apifox 中,向 ES 服务器发 GET请求 :http://localhost:9200/person/_search,请求体内容为:

Elasticsearch各种高级文档操作2,Elastic Search,核心知识点,elasticsearch

服务器响应结果

{
    "took": 2,
    "timed_out": false,
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 3,
            "relation": "eq"
        },
        "max_score": 1.2039728,
        "hits": [
            {
                "_index": "person",
                "_type": "_doc",
                "_id": "1",
                "_score": 1.2039728,
                "_source": {
                    "name": "zhangsan",
                    "age": 20,
                    "sex": "男"
                }
            },
            {
                "_index": "person",
                "_type": "_doc",
                "_id": "2",
                "_score": 1.0534762,
                "_source": {
                    "name": "zhangsan1",
                    "age": 21,
                    "sex": "男"
                }
            },
            {
                "_index": "person",
                "_type": "_doc",
                "_id": "3",
                "_score": 1.0534762,
                "_source": {
                    "name": "zhangsan2",
                    "age": 22,
                    "sex": "男"
                }
            }
        ]
    }
}

单字段排序文档

sort 可以让我们按照不同的字段进行排序,并且通过 order 指定排序的方式。desc 降序,asc升序

在 apifox 中,向 ES 服务器发 GET请求 :http://localhost:9200/person/_search,请求体内容为:

Elasticsearch各种高级文档操作2,Elastic Search,核心知识点,elasticsearch

服务器响应结果

{
    "took": 2,
    "timed_out": false,
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 3,
            "relation": "eq"
        },
        "max_score": null,
        "hits": [
            {
                "_index": "person",
                "_type": "_doc",
                "_id": "3",
                "_score": null,
                "_source": {
                    "name": "zhangsan2",
                    "age": 22,
                    "sex": "男"
                },
                "sort": [
                    22
                ]
            },
            {
                "_index": "person",
                "_type": "_doc",
                "_id": "2",
                "_score": null,
                "_source": {
                    "name": "zhangsan1",
                    "age": 21,
                    "sex": "男"
                },
                "sort": [
                    21
                ]
            },
            {
                "_index": "person",
                "_type": "_doc",
                "_id": "1",
                "_score": null,
                "_source": {
                    "name": "zhangsan",
                    "age": 20,
                    "sex": "男"
                },
                "sort": [
                    20
                ]
            }
        ]
    }
}

多字段排序文档

sort 可以让我们按照不同的字段进行排序,并且通过 order 指定排序的方式。desc 降序,asc升序。

假定我们想要结合使用 age 和 _score 进行查询,并且匹配的结果首先按照年龄排序,然后按照相关性得分排序。

在 apifox 中,向 ES 服务器发 GET请求 :http://localhost:9200/person/_search,请求体内容为:

{
"query": {
    "fuzzy": {
      "name": {
        "value": "zhangsan"
      }
    }
},
"sort": [
    {
        "age": {
            "order":"asc"
        } 
    },
    {
        "_score": {
            "order":"asc"
        } 
    }
]
}

服务器响应结果

{
    "took": 2,
    "timed_out": false,
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 3,
            "relation": "eq"
        },
        "max_score": null,
        "hits": [
            {
                "_index": "person",
                "_type": "_doc",
                "_id": "1",
                "_score": 1.2039728,
                "_source": {
                    "name": "zhangsan",
                    "age": 20,
                    "sex": "男"
                },
                "sort": [
                    20,
                    1.2039728
                ]
            },
            {
                "_index": "person",
                "_type": "_doc",
                "_id": "2",
                "_score": 1.0534762,
                "_source": {
                    "name": "zhangsan1",
                    "age": 21,
                    "sex": "男"
                },
                "sort": [
                    21,
                    1.0534762
                ]
            },
            {
                "_index": "person",
                "_type": "_doc",
                "_id": "3",
                "_score": 1.0534762,
                "_source": {
                    "name": "zhangsan2",
                    "age": 22,
                    "sex": "男"
                },
                "sort": [
                    22,
                    1.0534762
                ]
            }
        ]
    }
}

高亮查询文档

在进行关键字搜索时,搜索出的内容中的关键字会显示不同的颜色,称之为高亮。

Elasticsearch 可以对查询内容中的关键字部分,进行标签和样式(高亮)的设置。

在使用 match 查询的同时,加上一个 highlight 属性:

属性 解释
pre_tags 前置标签
post_tags 后置标签
fields 需要高亮的字段
name 这里声明 name字段需要高亮,后面可以为这个字段设置特有配置,也可以空

在 apifox 中,向 ES 服务器发 GET请求 :http://localhost:9200/person/_search,请求体内容为:

Elasticsearch各种高级文档操作2,Elastic Search,核心知识点,elasticsearch

服务器响应结果

{
    "took": 15,
    "timed_out": false,
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 1,
            "relation": "eq"
        },
        "max_score": 1.2039728,
        "hits": [
            {
                "_index": "person",
                "_type": "_doc",
                "_id": "1",
                "_score": 1.2039728,
                "_source": {
                    "name": "zhangsan",
                    "age": 20,
                    "sex": "男"
                },
                "highlight": {
                    "name": [
                        "<font color='red'>zhangsan</font>"
                    ]
                }
            }
        ]
    }
}

分页查询文档

from :当前页的起始索引,默认从 0 开始。 from = (pageNum - 1) * size
size:每页显示多少条

在 apifox 中,向 ES 服务器发 GET请求 :http://localhost:9200/person/_search,请求体内容为:

Elasticsearch各种高级文档操作2,Elastic Search,核心知识点,elasticsearch

服务器响应结果

{
    "took": 1,
    "timed_out": false,
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 4,
            "relation": "eq"
        },
        "max_score": null,
        "hits": [
            {
                "_index": "person",
                "_type": "_doc",
                "_id": "4",
                "_score": null,
                "_source": {
                    "name": "lisi",
                    "age": 25,
                    "sex": "女"
                },
                "sort": [
                    25
                ]
            },
            {
                "_index": "person",
                "_type": "_doc",
                "_id": "3",
                "_score": null,
                "_source": {
                    "name": "zhangsan2",
                    "age": 22,
                    "sex": "男"
                },
                "sort": [
                    22
                ]
            }
        ]
    }
}

完全匹配查询文档

match_phrase 会将检索关键词分词。match_phrase的分词结果必须在被检索字段的分词中都包含,默认情况下顺序必须相同且必须都是连续的。

在 apifox 中,向 ES 服务器发 POST 请求 :http://localhost:9200/person/_search,请求体内容为:

Elasticsearch各种高级文档操作2,Elastic Search,核心知识点,elasticsearch

查询成功后,服务器响应结果

{
    "took": 0,
    "timed_out": false,
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 1,
            "relation": "eq"
        },
        "max_score": 1.2039728,
        "hits": [
            {
                "_index": "person",
                "_type": "_doc",
                "_id": "1",
                "_score": 1.2039728,
                "_source": {
                    "name": "zhangsan",
                    "age": 20,
                    "sex": "男"
                }
            }
        ]
    }
}

本文小结

本文记录了Elasticsearch一些常见的文档操作文章来源地址https://www.toymoban.com/news/detail-810830.html

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

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

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

相关文章

  • 原生语言操作和spring data中RestHighLevelClient操作Elasticsearch,索引,文档的基本操作,es的高级查询.查询结果处理. 数据聚合.相关性系数打分

    ​ Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值。Elasticsearch 的实现原理主要分为以下几个步骤,首先用户将数据提交到Elasti

    2024年02月05日
    浏览(87)
  • 微服务分布式搜索引擎 Elastic Search RestClient 操作文档

    本文参考黑马 分布式Elastic search Elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中快速找到需要的内容 初始化RestHighLevelClient 为了与索引库操作分离,我们再次参加一个测试类,做两件事情: 初始化RestHighLevelClient 我们的酒店数据

    2024年01月24日
    浏览(41)
  • SpringBoot操作ES进行各种高级查询(值得收藏)

    创建SpringBoot项目,导入 ES 6.2.1 的 RestClient 依赖和 ES 依赖。在项目中直接引用 es-starter 的话会报容器初始化异常错误,导致项目无法启动。如果有读者解决了这个问题,欢迎留言交流 为容器定义 RestClient 对象 在 yml 文件中配置 eshost 调用相关 API 执行操作 创建操作索引的对象

    2024年02月03日
    浏览(87)
  • Elasticsearch7.8.0版本入门—— 高亮查询文档(高级查询)

    在 Postman 中,向 ES 服务器发 POST 请求 :http://localhost:9200/user/_doc/ 1 ,请求体内容为: 在 Postman 中,向 ES 服务器发 POST 请求 :http://localhost:9200/user/_doc/ 2 ,请求体内容为: 在 Postman 中,向 ES 服务器发 POST 请求 :http://localhost:9200/user/_doc/ 3 ,请求体内容为: 在 Postman 中,向

    2024年02月01日
    浏览(59)
  • Elasticsearch7.8.0版本入门—— 完全匹配查询文档(高级查询)

    在 Postman 中,向 ES 服务器发 POST 请求 :http://localhost:9200/user/_doc/ 1 ,请求体内容为: 在 Postman 中,向 ES 服务器发 POST 请求 :http://localhost:9200/user/_doc/ 2 ,请求体内容为: 在 Postman 中,向 ES 服务器发 POST 请求 :http://localhost:9200/user/_doc/ 3 ,请求体内容为: 在 Postman 中,向

    2023年04月24日
    浏览(51)
  • Elasticsearch7.8.0版本入门—— 多关键字精确查询文档(高级查询)

    在 Postman 中,向 ES 服务器发 POST 请求 :http://localhost:9200/user/_doc/ 1 ,请求体内容为: 在 Postman 中,向 ES 服务器发 POST 请求 :http://localhost:9200/user/_doc/ 2 ,请求体内容为: 在 Postman 中,向 ES 服务器发 POST 请求 :http://localhost:9200/user/_doc/ 3 ,请求体内容为: 在 Postman 中,向

    2024年02月16日
    浏览(40)
  • SpringBoot操作ES进行各种高级查询(值得收藏),阿里P7大佬手把手教你

    for(SearchHit hit:searchHits){ // 文档的主键 String id = hit.getId(); // 源文档内容 MapString, Object sourceAsMap = hit.getSourceAsMap(); String name = (String) sourceAsMap.get(“name”); // 由于前边设置了源文档字段过虑,这时description是取不到的 String description = (String) sourceAsMap.get(“description”

    2024年04月24日
    浏览(44)
  • ElasticSearch高级操作

    1、脚本形式 例: #删除5号 #新增8号 #更新2号 name为2号 2、java操作  3、从数据库写入数据 1、matchAll查询 脚本: java: 2、termQuery词条查询 term查询:不会对查询条件进行分词。 脚本: java: 3、matchQuery查询 match查询: •会对查询条件进行分词。 •然后将分词后的查询条件和词

    2023年04月15日
    浏览(31)
  • Elasticsearch8.8.0 SpringBoot实战操作各种案例(索引操作、聚合、复杂查询、嵌套等)

    Elasticsearch8.8.0 全网最新版教程 从入门到精通 通俗易懂 引入依赖 添加配置文件 application.yaml 导入ca证书到项目中 从任意一个es容器中,拷贝证书到resources目录下 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EXytUrDp-1691330960034)(media/16912196423122/16

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

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

    2023年04月08日
    浏览(33)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包