文章转载自:

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. Identity Server 4资源拥有者密码认证控制访问API

    基于上一篇文章中的代码进行继续延伸,只需要小小的改动即可,不明白的地方可以先看看本人上一篇文章及源码: Identity Server 4客户端认证控制访问API 一.QuickStartIdenti ...

  2. APISpace 成语大全API接口 免费好用

    成语有一个很大一部分是从古代相承沿用下来的,在用词方面往往不同于现代汉语,它代表一个故事或者典故.成语又是一种现成的话,跟习用语.谚语相近,但是也略有区别.成语是中华文化中的一颗璀璨的明珠.   成语 ...

  3. docker容器数据管理

    Docker容器数据卷 Docker中的数据可以存储在类似于虚拟机磁盘的介质中,在Docker中称为数据卷(Data Volume). 数据卷可以用来存储Docker应用的数据,也可以用来在Docke ...

  4. Solution -「2021.11.27」\Infty

    T1. 显然往 \(x < 0, y < 0\) 的点走一定不优. 根据转移式可发现 \(C(x, y)\) 即从 \((0, 0)\) 走到 \((x, y)\) 的方案数 \(\dbi ...

  5. Solution -「线段树」题目集合

    T1 无聊的数列 来自:Link flag 帖先从水题入手. 首先分析题目,它是以等差数列为原型进行的修改.等差数列一大性质就是其差分数列的值除第一项以外均相等. 于是不难想到使用差分数列进行维护. ...

  6. javaweb 03: jsp

    JSP 我的第一个JSP程序: 在WEB-INF目录之外创建一个index.jsp文件,然后这个文件中没有任何内容. 将上面的项目部署之后,启动服务器,打开浏览器,访问以下地址: http://loc ...

  7. [linux] 输入&输出&错误流

    输入&输出&错误流 Linux中有三种标准输入输出,分别是STDIN,STDOUT,STDERR,对应的数字分别是0,1,2. 标准 数字 含义 STDIN 0 标准输入,默认从键盘读 ...

  8. github碰到的问题

    下载问题 自己编译一下 mvn clear mvn compile mvn package 自己编译之后的文件,然后解压即可,第一次自己傻傻的,直接用源码跑,少报错! 项目预览问题 添加1s即可 下载 ...

  9. 用js获取当前页面的url

    1.获取当前或者指定页面的文件名或路径 window.location.pathname 2.设置或获取整个URl字符串 window.location.href 3.设置或获取URL相关的端口号 w ...

  10. Vue3系列2--项目目录介绍及运行项目

    1 Vite项目目录 用Vscode打开创建的项目,看到下面的目录结构: 通过运行  npm install 初始化项目后生成两个初始化文件:node_modules和 package-lock.js ...