023 elasticsearch查询数据 高亮 分页 中文分词器 field的数据类型

news/2024/10/18 5:52:33/

文章目录

    • 1查询的语法
    • 2查询全部数据
    • 3termQuery 关键词查询
    • 4QueryString查询,根据查询字符串查询
    • 5match查询,功能和query_string相同
    • 6multi_match查询
    • 7bool查询
    • 8高亮处理
    • 9查询结果分页
    • 10中文分词
    • field的数据类型

1查询的语法

方法:post
url:http://localhost:9200/[/{blog}][/{type}]/_search
请求体:
json形式的查询语句

{"query":{"xxx"}
}

2查询全部数据

{"query":{"match_all":{}}
}

3termQuery 关键词查询

是所有查询中最基本的一个查询
根据关键词进行查询,如果关键词在索引中存在就有结果
如果关键词不存在就查询不到结果。ES不会再次对查询的内容进行分词处理
需要指定:

  1. 要查询的关键词
  2. 要查询的字段
{"query":{"term":{"title":"java"}}
}

默认使用的是standard分词器。处理英文根据空格进行分词处理。如果处理中文,是一个汉字一个关键词。

4QueryString查询,根据查询字符串查询

查询条件可以指定一个字符串,在查询之前,可以对查询条件进行分词处理,然后基于分词之后的结果再次查询

{"query":{"query_string":{"default_field":"title","query":"第二轮开售|摩拳擦掌,笑迎五一"}}
}

5match查询,功能和query_string相同

{"query":{"match":{"title":"第二轮开售|摩拳擦掌,笑迎五一"}}
}

6multi_match查询

可以指定在多个字段中查询

{"query":{"multi_match":{"query":"第二轮开售|摩拳擦掌,笑迎五一","fields":["title","content"]}}
}

7bool查询

  1. 组合条件查询
    逻辑关系:
    must:必须满足,相当于是AND
    should:应该满足,相当于OR
    must_not:必须不能满足,相当于NOT
    语法:
{"query":{"bool":{"must":[],"should":[],"must_not":[],"filter":[]}}
}

案例:

{"query":{"bool":{"must":[{"match":{"title":"apple"}},{"match":{"content":"apple"}}]}}
}
  1. filter过滤查询
    在bool查询的filter节点中可以包含多个查询条件,条件之间层层过滤
    也可以直接使用filter进行数据的查询。filter查询是不进行打分处理。查询性能高于query

     	相关度排序:SEO:搜索引擎优化。两个指标:TF:关键词在文章中出现的频率。TF越大相关度越高。DF:所有文档中关键词出现的频率。DF越大相关度越低。例如 and根据TF和DF计算出一个相关度的得分,得分越高相关度越高,文档根据相关度得分进行降序排列。
    
{"query":{"bool":{"filter":[{"match_all":{}},{"term":{"title":"喜"}},{"term":{"title":"金"}},{"term":{"title":"北"}}								]}}
}

8高亮处理

在查询结果中将查询的关键词左右两边分别加上成对的html标签。
高亮的处理在查询条件中指定。
{"query":{"bool":{"must":[{"match":{"title":"apple"}}]}},"highlight":{"fields":{"title":{}},"pre_tags":"<em>","post_tags":"</em>"}
}

9查询结果分页

在query查询条件中增加两个属性
from:起始的行号,从0开始
size:每页显示的记录数量

{"query":{"multi_match":{"query":"苹果正开发","fields":["title","content"]}},"highlight": {"fields": {"title": {},"content": {}},"pre_tags": "<em>","post_tags": "</em>"},"from": 10,"size": 5
}

10中文分词

Ik-analyzer
https://github.com/medcl/elasticsearch-analysis-ik/releases

mkdir ik-analyzer
sudo yum install unzip
unzip elasticsearch-analysis-ik-7.10.2.zip -d ik-analyzer
cp ik-analyzer/ elasticsearch-7.10.2/plugins/ -R
方法:POST
url:http://localhost:9200/_analyze
方法体:{"analyzer":"standard","text":"and productivity has made it the world's most popular Java framework."}IK一旦安装之后有两个分词算法:ik_smart:快速分词,速度快,粒度比较粗。ik_max_word:最大数量分词,速度慢,粒度细。
索引一旦创建完毕不能修改分词器的如果使用中文分词,应该在创建索引时,设置mapping的过程中指定使用中文分词器。
PUT /blog1
{	"settings":{"number_of_shards":5,"number_of_replicas":1},"mappings":{"properties":{"id":{"type":"long"},"title":{"type":"text","analyzer":"ik_max_word","store":"true"},"mobile":{"type":"keyword","store":"true"},"comment":{"type":"text","analyzer":"ik_max_word","store":"true"},"content":{"type":"text","analyzer":"ik_max_word","store":"true"}			}}
}
POST /blog1/_bulk

field的数据类型

数值类型:intlongfloatdouble
字符串:text:需要分词的字段必须使用text,只有text类型才能支持分词器。keyword:不需要对字段的内容进行分词处理时,可以使用keyword数据类型。例如:身份证号、手机号、订单号等。
日期:data字段的三个属性:是否分词:是否是text类型。例如文章的title、content都需要分词。是否索引:是否对field的内容进行索引。如果text数据类型一定需要创建索引,分词之后一定要创建索引。不分词也可以把field的内容添加到索引中,使用keyword数据类型。也可以不索引field中的内容。例如文件的path,不需要分词,不需要索引,只需要存储即可。"path":{"type":"keyword","index":false,"store":true}是否存储定义field时,store属性是否是true。如果是true那么就存储,false不存储。无论是否存储,不影响分词、创建索引、搜索。影响的范围就是是否能在查询结果中看到原始内容。

http://www.ppmy.cn/news/1539912.html

相关文章

西门子828d的plc一些信息记录

1、虽然是200的plc但是引入了DB的形式替代原来的V存储区。 2、用户自定义DB块范围&#xff0c;DB9000-DB9063,共64个DB块。 可用地址范围如上图 机床MCP483面板地址表&#xff0c;其它类型的面板地址自己在828d简明调试手册里查看。 如何上载828d的plc程序&#xff1a; 1.通…

幼儿和青少年编程学习路径

1. 引言 编程在现代教育中的重要性 随着信息时代的来临&#xff0c;编程不再是一个小众技能&#xff0c;而是成为未来社会各行业的重要基础能力。从计算机科学到人工智能&#xff0c;再到数据科学和软件工程&#xff0c;编程技能无疑是未来全球经济的核心驱动力之一。越来越多…

软考(网工)——网络互联与互联网

&#x1f550;网络互联设备 1️⃣网络互联设备总结&#xff08;重点&#xff09; 2️⃣中继器与集线器 &#x1f534;网络演进历史 ⬇️⬇️&#x1f7e0;集线器工作原理与问题 从一个接口进入的数据&#xff0c;进行信号放大后&#xff0c;从其他所有接口进行泛洪。 如下图…

10秒钟用Midjourney画出国风味的变形金刚

上魔咒 Optimus Prime comes from the movie Transformers, Chinese style, Wu ShanMing, Ink Painting Halo Dyeing, Conceptual of the Digita Art, MasterComposition, Romantic Ancient Style, Inspired by traditional patterns and symbols, Minimalism, do not con…

群晖前面加了雷池社区版,安装失败,然后无法识别出用户真实访问IP

有nas的相信对公网都不模式&#xff0c;在现在基础上传带宽能有100兆的时代&#xff0c;有公网代表着家里有一个小服务器&#xff0c;像百度网盘&#xff0c;优酷这种在线服务都能部署为私有化服务。但现在运营商几乎不可能提供公网ip&#xff0c;要么自己买个云服务器做内网穿…

【springboot入门-mvc常用注解使用方式及原理】

常用注解 PathVariable&#xff1a;用于从URL路径中提取变量。RequestHeader&#xff1a;用于从HTTP请求头中获取数据。ModelAttribute&#xff1a;用于获取请求参数&#xff08;包括URL参数和POST请求的表单数据&#xff09;&#xff0c;也可以用于将数据绑定到对象上。Reque…

Qt C++ 编程中定义了一个槽函数(slot)deleteLater的作用

这行代码是在 Qt C编程中定义了一个槽函数&#xff08;slot&#xff09;deleteLater。 在 Qt 框架中&#xff0c;Q_SLOTS关键字用于声明类中的槽函数。deleteLater是一个非常有用的函数&#xff0c;它会安排接收对象在事件循环返回后被删除。 通常在以下情况下会使用deleteLa…

作为一名测试工程师如何学习Kubernetes(k8s)技能

前言 Kubernetes(K8s)作为云原生时代的关键技术之一&#xff0c;对于运维工程师、开发工程师以及测试工程师来说&#xff0c;都是一门需要掌握的重要技术。作为一名软件测试工程师&#xff0c;学习Kubernetes是一个有助于提升自动化测试、容器化测试以及云原生应用测试能力的重…