博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ElasticSearch-DSL搜索 term与match
阅读量:3758 次
发布时间:2019-05-22

本文共 2544 字,大约阅读时间需要 8 分钟。

term精确搜索

搜索的时候会把用户搜索内容,比如“我知道”作为一整个关键词去搜索,而不会对其进行分词后再搜索

POST    http://10.0.0.220:9200/shop/_doc/_search{
"query":{
"term":{
"nickname":"我知道" } }, "_source":[ "id", "nickname", "age" ]}

在这里插入图片描述

head可视化操作:
在这里插入图片描述
terms 多个词语匹配检索

POST     http://10.0.0.220:9200/shop/_doc/_search{
"query": {
"terms": {
"desc": ["我知道", "好好学习", "搜索"] } }}

match分词搜索

match会对慕课网先进行分词(其实就是全文检索),在查询,而term则不会,直接把“我知道”作为一个整的词汇去搜索。

POST    http://10.0.0.220:9200/shop/_doc/_search{
"query":{
"match":{
"nickname":"我知道" } }, "_source":[ "id", "nickname", "age" ]}

在这里插入图片描述

对比上面term和match的结果便知道效果

match_phrase 短语匹配

分词结果必须在text字段分词中都包含,而且顺序必须相同,而且必须都是连续的。

POST     http://10.0.0.220:9200/shop/_doc/_search{
"query": {
"match_phrase": {
"desc": {
"query": "男人 低", "slop": 20 } } }}

slop:允许词语间跳过的数量

在这里插入图片描述

operator

or:搜索内容分词后,只要存在一个词语匹配就展示结果

and:搜索内容分词后,都要满足词语匹配

POST     http://10.0.0.220:9200/shop/_doc/_search{
"query": {
"match": {
"desc": "不知道在哪里" } }}##等同于{
"query": {
"match": {
"desc": {
"query":"不知道在哪里", "operator":"or" } } }}

##相当于

select * from shop where desc=‘不知道’ or|and desc=‘在哪里’
在这里插入图片描述
minimum_should_match
最低匹配精度,至少有 [分词后的词语个数] x百分百,得出一个数据值取整。举个例子:当前属性设置为70,若一个用户查询检索内容分词后有10个词语,那么匹配度按照 10x70%=7,则desc中至少需要有7个词语匹配,就展示;若分词后有8个,则 8x70%=5.6,则desc中至少需要有5个词语匹配,就展示。也能设置具体的数字,表示个数。

POST     http://10.0.0.220:9200/shop/_doc/_search{
"query": {
"match": {
"desc": {
"query": "哈哈哈,你搞什么,我在哪里", "minimum_should_match": "60%" } } }}

在这里插入图片描述

当我们把这个百分比调大:

在这里插入图片描述

根据文档索引id查询

POST     http://10.0.0.220:9200/shop/_doc/_search{
"query": {
"ids": {
"type": "_doc", "values": ["1001", "1007", "1008"] } }}

在这里插入图片描述

multi_match

满足使用match在多个字段中进行查询的需求(提升权重前)

POST    http://10.0.0.220:9200/shop/_doc/_search{
"query": {
"multi_match":{
"query":"为道在哪里", "fields":[ "desc","nickname" ] } }}

在这里插入图片描述

boost

权重,为某个字段设置权重,权重越高,文档相关性得分就越高。通畅来说搜索商品名称要比商品简介的权重更高。

POST    http://10.0.0.220:9200/shop/_doc/_search{
"query": {
"multi_match":{
"query":"为道在哪里", "fields":[ "desc^10","nickname" ###次数^10就是提高权重 ] } }}

desc^10 代表搜索提升10倍相关性,也就是说用户搜索的时候其实以这个desc为主,nick为辅,desc的匹配相关度当然要提高权重比例了。

​​​​​​​在这里插入图片描述

转载地址:http://wrwpn.baihongyu.com/

你可能感兴趣的文章
什么是接口
查看>>
Java高级篇之进程
查看>>
类加载机制
查看>>
了解jdk1.8版本一些新的特性
查看>>
Java高级篇之网络通讯
查看>>
浅谈篇之线程池
查看>>
Lambda 表达式
查看>>
字符串函数MySQL
查看>>
8个SQL讲解优化
查看>>
MySQL实战续(二)
查看>>
安装Elastic和kibana
查看>>
什么是搜索
查看>>
全文检索工具elasticsearch
查看>>
Vue之条件渲染实战
查看>>
Vue之侦听属性
查看>>
求职指南(1)
查看>>
MySQL day11
查看>>
MySQL day12
查看>>
JSONP原理
查看>>
Vue.js学习笔记—插值的操作(1)
查看>>