文章转载自:

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. java--运算符和表达式

    运算符:就是对常量或者遍历进行操作的符号: 表达式:用运算符把常量或者变量连接起来符合java语法的式子称为表达式,不同运算符连接的表达式体现的是不同类型的表达式. 一.算术运算符 1.使用%运算符: ...

  2. AI2(App Inventor 2) 离线版

    介绍 我们的目标:搭建一个本地多用户的App Inventor 2 服务器目的:课堂教学,社团活动,兴趣学习优势:管理权限(用户管理,账号切换,资源打包),网络链接速度快,拥有配套服务.注意:每次退出 ...

  3. 在 SQL Server 中使用 Try Catch 处理异常

    如何在 SQL Server 中使用 Try Catch 处理错误? 从 SQL Server 2005 开始,我们在TRY 和 CATCH块的帮助下提供了结构错误处理机制.使用TRY-CATCH的语 ...

  4. GFS分布式文件系统

    一.文件系统简介1.文件系统的组成接口:文件系统接口功能模块(管理.存储的工具):对对象管理里的软件集合对象及属性:(使用此文件系统的消费者)2.文件系统的作用从系统角度来看,文件系统时对文件存储设备 ...

  5. 在docker容器中如何自动生成配置文件(以nginx配置为例)

    应用场景类似于多个域名要起多个容器,有些参数有些域名需要,有些域名不需要,或者参数的值不太一样,需要去对应的配置文件修改,不太灵活,如果通过变量的方式直接定义在Dockerfile文件中,需要哪些参数 ...

  6. 新型MPP的Doris数据库:数据模型和数据分区使用详解

    Apache Doris是一个现代化的MPP分析性数据库产品.是一个由百度开源,在2018年贡献给Apache基金会,成为有顶级开源项目.仅需要亚秒级响应时间即可获得查询结果,可以有效地支持实时数据分 ...

  7. [NCTF2019]SQLi-1||SQL注入

    1.打开之后首先尝试万能密码登录和部分关键词(or.select.=.or.table.#.-等等)登录,显示被检测到了攻击行为并进行了拦截,结果如下: 2.使用dirmap进行目录扫描,发现robo ...

  8. 【安全通告】关于 DolphinScheduler 漏洞情况的说明

    点击上方 蓝字关注我们 [安全通报] [影响程度:低] Apache DolphinScheduler 社区邮件列表最近通告了 1 个漏洞,考虑到有很多用户并未订阅此邮件列表,我们特地在此进行情况说明 ...

  9. HttpClient 在vivo内销浏览器的高并发实践优化

    作者:vivo 互联网服务器团队- Zhi Guangquan HttpClient作为Java程序员最常用的Http工具,其对Http连接的管理能简化开发,并且提升连接重用效率:在正常情况下,Htt ...

  10. Redis入门到实战

    一.Redis基础 Redis所有的命令都可以去官方网站查看 1.基本命令 keys * 查找所有符合给定模式pattern(正则表达式)的 key .可以进行模糊匹配 del key1,key2,. ...