文章转载自:

https://mp.weixin.qq.com/s?__biz=MzI2NDY1MTA3OQ==&mid=2247483914&idx=1&sn=436f81480c2a15af6345183f8eebf16e&chksm=eaa82a22dddfa334c95c3f4bd227c9a78bba20715494b464c5068bc260d9b4320412736fed77&scene=21#wechat_redirect

一、高级检索的功能点

通过高级搜索配置搜索项,能更准确的过滤掉不相干信息,获取最想要的检索信息。

二、高级检索拆分

1、包含以下全部的关键词:

需要分词处理;

若需要指定字段,则使用matchQuery实现;

若无需指定字段的全文检索,则使用queryStringQuery实现;

2、包含以下的完整关键词 :

需要完整匹配字符,使用wildcardQuery结合”*”实现;

3、包含以下任意一个关键词 :

空格分隔每个关键词,需要将多个词空格拆分,然后对每个关键词通过should结合wildcardQuery遍历实现;

4、不包括以下关键词 :

包含以下全部关键词的反面,

若需要指定字段,则使用must_not结合matchQuery实现;

若无需指定字段,则使用must_not结合queryStringQuery实现;

5、限定要搜索的网页的时间是:

限定搜索的开始和结束时间,通过rangeQuery实现。

6、关键词位置:

根据关键词位置的不同,采用不同的实现;

关键词位于title字段:指定title进行检索;

关键词位于content字段:指定content进行检索;

关键词位于全部字段:不指定字段进行检索,多使用 queryStringQuery实现。

三、DSL高级检索实现

    POST detail_index/_search

    {

      "from" : 0,

      "size" : 10,

      "query" : {

        "bool" : {

          "must" : [

            {

              "match" : {

                "title" : {

                  "query" : "苹果乔布斯",

                  "operator" : "OR",

                  "prefix_length" : 0,

                  "max_expansions" : 50,

                  "fuzzy_transpositions" : true,

                  "lenient" : false,

                  "zero_terms_query" : "NONE",

                  "boost" : 1.0

                }

              }

            },

            {

              "wildcard" : {

                "title.keyword" : {

                  "wildcard" : "*苹果总裁库克*",

                  "boost" : 1.0

                }

              }

            },

            {

              "range" : {

                "create_time" : {

                  "from" : "2017-09-07 00:00:00",

                  "to" : "2017-09-15 23:59:59",

                  "include_lower" : true,

                  "include_upper" : true,

                  "boost" : 1.0

                }

              }

            }

          ],

          "must_not" : [

            {

              "wildcard" : {

                "title.keyword" : {

                  "wildcard" : "*苹果梨*",

                  "boost" : 1.0

                }

              }

            }

          ],

          "should" : [

            {

              "wildcard" : {

                "title.keyword" : {

                  "wildcard" : "*苹果手机*",

                  "boost" : 1.0

                }

              }

            },

            {

              "wildcard" : {

                "title.keyword" : {

                  "wildcard" : "*iphoneX*",

                  "boost" : 1.0

                }

              }

            }

          ],

          "disable_coord" : false,

          "adjust_pure_negative" : true,

          "boost" : 1.0

        }

      },

      "_source" : {

        "includes" : [

          "title",

          "content"

      ],

        "excludes" : [ ]

      },

      "highlight" : {

        "pre_tags" : [

          "<span style=\"color:red\">"

        ],

        "post_tags" : [

          "</span>"

        ],

        "fragment_size" : 100,

        "number_of_fragments" : 5,

        "require_field_match" : true,

        "fields" : {

          "title" : { }

      }

      }

    }

Elasticsearch实现类Google高级检索的更多相关文章

  1. 如何使用GOOGLE高级搜索技巧

    如何使用GOOGLE高级搜索技巧 一,GOOGLE简介 Google(www.google.com)是一个搜索引擎,由两个斯坦福大学博士生Larry Page与Sergey Brin于1998年9月发 ...

  2. Google高级搜索语法

    Google高级搜索语法   Google搜索果真是一个强悍的不得了的搜索引擎,今天转了一些 google的高级搜索语法 希望能帮助到大家. 一.allinanchor: anchor是一处说明性的文 ...

  3. Java开发知识之Java类的高级特性,内部类.以及包使用.跟常量关键字

    Java开发知识之Java类的高级特性,内部类.以及包使用.跟常量关键字 一丶Java中包的机制 首先包其实就是个文件夹.作用就是管理类. Java中每次定义一个类的时候.通过Java编译之后.都会生 ...

  4. Python——类的高级主题

    介绍关于类的一些高级主题,这些是可选的,在Python应用程序中,不会常常遇到. =========================================================== ...

  5. 前端1-----CSS层叠样式表了解,css的引入方式,三大选择器(标签,类,id),高级选择器

    前端1-----CSS层叠样式表了解,css的引入方式,三大选择器(标签,类,id),高级选择器 一丶CSS简介    叠样式表(英文全称:Cascading Style Sheets)是一种用来表现 ...

  6. 基于NEO4J的高级检索功能

    基于NEO4J的高级检索 一.需求 二.创建索引 1.索引自动更新配置 2.执行带有索引自动更新配置的过程 三.查询索引 1.LUCENE查询语法 2.实现高级检索的核心:LUCENE QUERY语句 ...

  7. 关于对象的行为、数组、继承和类的高级概念(Java)

    1.对象的行为:                   (1)方法调用栈:所有的方法调用都维护在一个称为调用栈的结构中. 第一个被调用的方法就是main(),该方法是Jvm调用的,因此main()方法总 ...

  8. Elasticsearch高级检索之使用单个字母数字进行分词N-gram tokenizer(不区分大小写)【实战篇】

    一.前言 小编最近在做到一个检索相关的需求,要求按照一个字段的每个字母或者数字进行检索,如果是不设置分词规则的话,英文是按照单词来进行分词的. 小编以7.6.0版本做的功能哈,大家可以根据自己的版本去 ...

  9. ES 21 - Elasticsearch的高级检索语法 (包括term、prefix、wildcard、fuzzy、boost等)

    目录 1 term query - 索引词检索 1.1 term query - 不分词检索 1.2 terms query - in检索 2 prefix query - 前缀检索 3 wildca ...

随机推荐

  1. 攻防世界MISC进阶区 61-63

    61.肥宅快乐题 得到swf文件,但是用PotPlayer打不开,用浏览器应该可以打开,打开后可以在npc的对话中看到一段base64 解密后就可以得到flag 62.warmup 得到一张png和一 ...

  2. zookeeper和spring cloud版本冲突

    1.使用elastic-job进行任务调度,而核心的就是使用zookeeper进行管理,但这个与spring cloud 冲突造成启动不了 |ERROR |main |SpringApplicatio ...

  3. day01 Java_基础

    1.类型 int:整数 long:长整数 double:浮点数 char:字符型--单引号只能有一个 boolean:布尔型--真假 string : 字符串--双引号,可以0-多个 2.算数运算符: ...

  4. Tomcat服务部署及配置

    Tomcat服务部署 1.环境准备 systemctl stop firewalld setenforce 0 2.安装jdk cd /opt 将jdk和tomcat软件包拖入当前目录下进行解压 rp ...

  5. 03 uniapp自定义导航栏的开发

    在我眼里自定义导航分2类: 原生基础上 || 非原生基础上 总结:项目当中能原生就原生,提高性能 区别 uni-app 自带原生导航栏,在pages.json里配置. 原生导航的体验更好,渲染新页面时 ...

  6. 【做题笔记】CF Edu Round 132

    1. 前言 本人第一次把 Div2. D 切了,开心. C 不会,寄. 后来在场外想到一种奇怪做法 AC 了. 2. 正文(A-D) CF 比赛链接 A. Three Doors 签到题.循环查找手中 ...

  7. 使用Properties集合存储数据,遍历取出Properties集合中的数据和Properties集合中的方法store和load

    package com.yang.Test.PropertiesStudy; import java.io.FileWriter; import java.io.IOException; import ...

  8. Azure Devops(十五) 使用Azure的私有Maven仓库

    上一篇文章中,我们介绍了如何使用Azure的nuget仓库,今天我们来研究一下如何使用azure给我们提供的maven仓库. 首先,我们打开azureDevops,点击到制品界面,然后选择maven. ...

  9. C#/VB.NET 将PPT或PPTX转换为图像

    C#/VB.NET 将PPT或PPTX转换为图像 由于大多数便携式设备支持浏览图片而不支持浏览PowerPoint 文件,所以相比较而言,图像对于用户而言更加友好.除此之外,将PowerPoint文档 ...

  10. 【FAQ】【Push Kit】 华为怎么设置角标

    ​[问题描述] HMS Core Push 怎么设置角标?角标设置不成功如何去排查问题? [问题解答] 华为推送怎么设置角标? 1.消息体设置 我们可以参考桌面角标这一篇文档进行设置角标 ​ 2.端测 ...