精华内容
下载资源
问答
  • 其一,元字段,元字段用于ES对每个文档自带的元数据结构,包括 _index,_type, _id,和_source等等构成。针对这一类,着重讲解它们所代表的意思和一些使用。 其二,就是字段类型(也叫属性),其包括的类型比较多...

    es中字符串类型text(全文本)

    导语

    从本小节开始我们开始学习es中常用的元数据类型和字段映射,学习和理解它们可以有助于理解es及其工作机制。

    其主要分为两大类。

    其一,元字段,元字段用于ES对每个文档自带的元数据结构,包括 _index_type_id,和_source等等构成。针对这一类,着重讲解它们所代表的意思和一些使用。

    其二,就是字段类型(也叫属性),其包括的类型比较多,如下图所示,这部分也是我们开发最常使用的使用,尤其string,数组对象集合等等都是很常用,所以也是我们重点关注的知识点。

    在这里插入图片描述

    分类

    字符串包括text和keyword两种类型

    全文本(text)

    全文本。通常用于基于文本的相关性搜索。全文本字段可以分词,即在索引执行之前通过一个分词器将字符串转换为单词列表。分词操作使得es可以在全文本字段上搜索单词。全文本字段不用于排序,很少用于聚合等操作

    示例代码

    #创建索引
    PUT example2
    #添加映射
    PUT example2/docs/_mapping
    {
      "properties": {
        "name":{
          "type":"text",
          "analyzer":"ik_max_word",
          "search_analyzer":"ik_smart",
          "index":"true",
          "store":"true"
        },
        "headImg":{
          "type":"text",
          "index":"false",
          "store":"true"
        },
        "descripton":{
          "type":"text",
          "index":"false",
          "store":"false"
        }
      } 
    }
    #查询映射
    GET example2/docs/_mapping
    
    

    下面我们来解释上面那一段话。

    1. 通过analyzer属性指定分词器。上边指定了name字段的analyzer是指在索引使用ik_max_word,搜索时使用ik_smart对于ik分词器建议是索引时使用ik_max_word将搜索内容进行细粒度分词,搜索时使用ik_smart提高搜索精确性。

    2. 通过index属性指定是否索引。默认为index=true,即要进行索引,只有进行索引才可以从索引库搜索到。但是也有一些内容不需要索引,比如:商品图片地址只被用来展示图片,不进行搜索图片,此时可以将index设置为false。

    3. 通过store属性来决定是否在source之外存储。默认store=false,每个文档索引后会在 ES中保存一份原始文档,存放在"_source"中,一般情况下不需要设置store为true,因为在_source中已经有一份原始文档了。

    4. 通过fields属性,可以对同一个字段进行多种策略的索引。通常为一个字段可以设置一个全文本字段,一个精确的keyword字段类型。示例如下。

      示例

    #添加映射
    PUT example2/docs/_mapping
    {
      "properties": {
        "name":{
          "type":"text",
          "analyzer":"ik_max_word",
          "search_analyzer":"ik_smart",
          "index":"true",
          "store":"true",
           "fields": {
                "noAnalyzerName": {
                    "type": "keyword"
                },
                "analyzerName": {
                    "type": "text",
                    "analyzer":"ik_max_word",
                }
           }
        },
        "headImg":{
          "type":"text",
          "index":"false",
          "store":"true"
        }
      } 
    } 
    

    例如上述的name的配置的2种索引的策略。

    展开全文
  • 字段默认情况下不存储,并且不可搜索。 该类型的字段可以作为对es的补充了解,实际开发中使用的较少。 示例使用 1、映射定义 PUT example PUT example/docs/_mapping { "properties": { "id":{"type": "long"}, ...

    概念

    二进制数据类型。该binary类型接受二进制值作为 Base64编码的字符串。该字段默认情况下不存储,并且不可搜索

    该类型的字段可以作为对es的补充了解,实际开发中使用的较少。

    示例使用

    1、映射定义

    PUT example
    PUT example/docs/_mapping
    {
        "properties": {
            "id":{"type": "long"},
            "name": {"type": "text"},
            "age":{"type": "integer"},
            "headImg": {"type": "binary"}
        }
    }
    
    

    2、添加文档记录

    PUT example/docs/1 
    {
        "id": 1,
        "name":"张三",
        "age":22,
        "headImg":"U29tZSBiaW5hcnkgYmxvYg=="
    }
    
    PUT example/docs/2 
    {
        "id": 2,
        "name":"李四",
        "age":41,
        "headImg":"U29tZSBiaW5hcnkgYmxvYg=="
    }
    

    注意:Base64编码的二进制值不能包含嵌入式换行符\n

    展开全文
  • 比如常见的邮箱登录、或是手机号登录。 如果不给它创建索引,则MySQL就会进行全局扫描,非常耗时。那么,类似邮箱地址这样的字符串,我们应该如何给它创建索引呢?这里简单介绍几种方法。 几种方法 比如我们有一张表...

    背景

    我们在业务场景中经常会碰到通过某个字符串查询对应记录的情况。比如常见的邮箱登录、或是手机号登录。
    如果不给它创建索引,则MySQL就会进行全局扫描,非常耗时。那么,类似邮箱地址这样的字符串,我们应该如何给它创建索引呢?这里简单介绍几种方法。

    几种方法

    比如我们有一张表user_info用于存储用户登录信息,包括自增主键ID、邮箱地址、对应密码。
    这里我们经常会用到的SQL操作是select email, password from user_info where email="XXXXXXX"

    直接创建索引

    第一种方法当然是直接使用email来创建索引。这种方法虽然简单粗暴且会占用大量的存储空间,但是有一个好处,就是回表操作只需一次就行。

    使用前缀索引

    所谓前缀索引,比如前面的示例,就是将email字段的前缀截取下来,然后作为索引来使用。

    添加索引的SQL语句为:alter table user_info add index index_eamil(email(9)),这里就添加了一个email字段前9位字符为前缀索引。

    假如email字段的前9位字符就可以唯一的标示一个email地址,比如前9位是不同的数字,后面都是@qq.com。那么这样就做到了完全的区分度。在选择某email时,比如select email, password from user_info where email="123456789@qq.com",MySQL会拿前9位去索引查找,查找得到则会回表到主键树中获取到对应的记录。

    使用前缀索引,一定要权衡好前缀选取的长度,因为前缀的长度就意味着区分度。如果前缀索引可以完全区分,那当然是最好的,这样只需要回表一次就可以拿到数据了。区分度越高越好,区分度越高,也就使得回表操作次数越少。

    只要前缀长度取的合适,就可以既有满意的区分度,又有满意的存储空间占用。

    不过使用前缀索引也有一个劣势,在于使用前缀索引会影响到覆盖索引的使用。

    倒序存储

    倒序存储即是将对应字段倒序过来再取前缀创建索引。针对于前缀区分度低,但后缀区分度高时使用。

    比如我们需要存储一个user_info用户信息表,存储的是自增ID、身份证号、密码。身份证号就属于前缀区分度低(前缀都是一些通用代号),但后缀区分度高的字符串。

    在存储以及查询时也需要将身份证号倒过来使用。比如,在查询时,使用语句:select user_id, password from user_info where user_id=reverse(XXXXXX)

    hash存储

    将对应字段hash之后作为索引存储,hash之后冲突的概率较低,也可大大降低回表的次数。只是由于需要存储字段hash之后的数据,会增加额外存储空间的占用。

    总结

    前面简单介绍了一下几种不同的对字符串创建索引的方法。
    总结如下:

    索引方式 优势 劣势 适用场景
    直接创建索引 回表次数少 索引空间占用大,且每次字符串匹配时间较长 数据量不大或字符串不长的情况
    前缀索引 索引空间占用小,且每次字符串匹配时间较短 可能增加回表次数 选取出的前缀可以有较高的区分度
    倒序存储 无需添加新字段 只能支持单条查询,不支持范围查询 前缀区分度低,后缀区分度高
    hash存储 冲突概率低,得出的索引区分度较高 只能支持单条查询,不支持范围查询,且需要增加新的存储字段 无需范围查询且普适性较高
    展开全文
  • 常见使用方法,编辑好一个需要显示的value table,并且可以随意指定一个value table中的任意一字段,作为选择对象字段(fieldname_dest), 并把相应的选择值,返回到return table中。 但是默认的情况下,只会返回...
     
    F4检索帮助函数:F4IF_INT_TABLE_VALUE_REQUEST 
    常见使用方法,编辑好一个需要显示的value table,并且可以随意指定一个value table中的任意一字段,作为选择对象字段(fieldname_dest),
    并把相应的选择值,返回到return table中。
    但是默认的情况下,只会返回被选中的那一行的对象字段(fieldname_dest)的值。
    如果要想用选择行的其他字段也想返回来的话,可以使用以下方法。
     
    代码如下: 能够返回选中行的第2,3,4列字段的内容
      CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
        EXPORTING
          retfield                     'ZWLH'            "lt内表里面的字段
          dynpprog                     sy-repid
          dynpnr                       sy-dynnr
          dynprofield                  = 'ZWLH'            "画面上绑定字段
          value_org                    =  'S'
          callback_program             sy-repid
    *     MULTIPLE_CHOICE              = 'X'               "X:支持多选,space:单选
          callback_form                'CM_FORM'
        TABLES
          value_tab                    gt_list1          "需要显示帮助的值内表
          return_tab                   lt_return         "返回值
        EXCEPTIONS
          parameter_error              1
          no_values_found              2
          OTHERS                       3.
    
      IF sy-subrc 0.
        READ TABLE lt_return INTO ls_return INDEX 1.
      ENDIF.
    
     
    *&---------------------------------------------------------------------*
    *&      Form  cb_form
    *&---------------------------------------------------------------------*
    FORM cm_form TABLES record_tab  STRUCTURE seahlpres
                  CHANGING     shlp TYPE      shlp_descr_t
                        callcontrol LIKE      ddshf4ctrl.
      DATAinterface LIKE LINE OF shlp-interface.
      READ TABLE shlp-interface INTO interface INDEX 1.
      interface-shlpfield+4(1'3'.
      interface-valfield 'ZZYH'.
      APPEND interface TO shlp-interface.
    
      interface-shlpfield+4(1'5'.
      interface-valfield 'ZEDI'.
      APPEND interface TO shlp-interface.
    ENDFORM.                    "bo_callback_form
     
     
    展开全文
  • MYSQL:计算字段

    千次阅读 2019-01-16 21:28:30
    储存在表中的数据一般都不是应用程序所需要(例如如果想要在一个字段中既显示公司名,又显示显示公司地址,但这两个信息一般包含在不同的表列中),我们需要从数据库中检索出转换、计算或格式化后的数据应用到应用程序...
  • 1、 检索产品信息 //MARK: - 格式化产品的价格 func formattedPrice(product:SKProduct) -> String {// NSNumberFormatter * numberFormatter = [[NSNumberFormatter alloc] init]; let numberFormatter:N
  • 信息检索复习笔记

    万次阅读 2020-12-17 17:14:46
    信息检索复习 第一讲 搜索 IR(信息检索是什么样的学科): 实质上是融合了文本及多媒体检索、数据挖掘、机器学习和自然语言处理的综合学科 为什么要进行信息检索?信息过载 搜索 搜索的过程 从大规模非结构化数据...
  • MongoDB允许深入文档内部,对嵌套字段和数组建立索引;嵌套对象和数组字段可以和复合索引中的顶级字段一起使用,多数情况下与“正常”索引字段的行为也是一致的。 考虑以下文档集合(user ): db.user....
  • MySQL创建计算字段

    千次阅读 2017-10-28 10:57:15
    MySQL创建计算字段
  • mysql之创建计算字段

    2020-02-03 16:52:51
    计算字段的另一常见用途是对检索出的数据进行算术计算。举一个例子, orders 表包含收到的所有订单, orderitems 表包含每个订单中的各项物品。下面的SQL语句检索订单号 20005 中的所有物品: ...
  • 一、背景   ...根据业务需求,发现以前的同事在设计表的时候,很多字段都没有设置默认值。...对于常见的int类型,默认值为0就好,但是对于varchar类型呢,默认值是设置为”还是N
  • JIRA 的字段配置

    2019-09-27 22:23:27
    默认字段(Default Field Configuration)配置,最好都是非必填。 项目的字段关联字段方案。 字段方案针对不同问题类型,设置不同的字段配置策略。 在每个字段配置策略中去设置自定义字段必选还是非必选 ...
  • #存储在表中的数据一般不是应用程序所需要的,需要从数据库中检索出转换、计算或格式化过的数据 #计算字段并不实际存在于数据库表中 #计算字段是运行时在SELECT语句内创建的 字段: 基本上与列的意思相同,术语字段...
  • HTTP头字段

    千次阅读 2018-03-20 21:49:53
    标题字段是以明文字符串格式由冒号分隔的名称 - 值对,以回车符(CR)和换行符(LF)字符序列结尾。标题部分的结尾由空字段(行)表示,导致两个连续CR-LF对的传输。过去,长线可以折成多行,作为下一行的第一个字符...
  • MySql 全文检索

    2019-03-10 20:46:02
    全文检索是利用查询关键字和查询列内容之间的相关度进行检索,可以利用全文索引来提高匹配的速度。 引擎支持:全文索引在MySql中很早就已支持,不过5.6以前只有 MyISAM 引擎支持,5.6以后 InnoDB 也开始支持全文检索...
  • 第四章 信息检索原理与技术 4.1 信息检索的概念 信息检索是指从信息集合中迅速、准确地查找出所需信息的程序和方法。信息检索有广义、狭义之分 • 广义信息检索:信息存储与检索两个过程。 • 狭义信息检索:仅指从...
  • 字段 基本上与列的意思相同,经常互换使用,不过数据库列一般称为列,而术语字段通常用于在计算字段的连接上。 拼接字段 拼接是将值联结到一起构成单个值。 在MySQL的SELECT语句中,可以使用Concat() 函数来拼接...
  • 检查自己的sql语句,为那些频繁在where子句中出现的字段建立索引。 3,尝试建立复合索引来进一步提高系统性能。修改复合索引将消耗更长时间,同时,复合索引也占磁盘空间。 4,对于小型的表,建立索引可能会影响...
  • 常用检索技术

    2012-05-16 12:29:41
    1. 布尔逻辑检索 利用布尔逻辑算符进行检索词或代码的逻辑组配,是现代信息检索系统中最常用的一种技术。常用的布尔逻辑算符有三种,分别是逻辑或“OR”、逻辑与“AND”、逻辑非“NOT”。  2. 截词检索 截词检索...
  • 全文检索系统

    2018-04-25 17:32:17
    全文检索系统 什么是全文检索?答:在当前站点中的所有数据都将会被当做搜索的目标,通过一个关键字,可以把处于不同位置的相关数据都检索出来... 如果数据量非常大,需要提高查询效率,可以为title字段添加索引(...
  • mysql---计算字段

    2017-06-13 09:23:11
    1. 计算字段存储在数据库表中的数据一般不是应用程序所需要的格式,例如如果想要在一个字段中既显示公司名,又显示显示公司地址,但这两个信息一般包含在不同的表列中。 但实际需要的是直接从数据库中检索出转换、...
  • index定义字段的分析类型以及检索方式 如果是no,则无法通过检索查询到该字段; 如果设置为not_analyzed则会将整个字段存储为关键词,常用于汉字短语、邮箱等复杂的字符串; 如果设置为analyzed则将会通过默认的...
  • SOLR检索调试

    千次阅读 2014-09-28 10:02:07
     Solr/Lucene是一个全文检索引擎,全文引擎和SQL引擎所不同的是强调部分相关度高的内容返回,而不是所有内容返回, 所以部分内容包含在索引库中却无法命中是正常现象。  多数情况下我们建议优化分词器或者引擎...
  • 全文检索工具Lucene入门教程

    千次阅读 多人点赞 2020-07-11 17:55:11
    Apache Lucene是完全用Java编写的高性能,功能齐全的,全文检索引擎工具包,通过lucene可以让程序员快速开发一个全文检索功能。 1.1什么是全文检索 在我们的生活中数据总体分为两种:结构化数据 和非结构化数据 。...
  • SQL 创建计算字段

    千次阅读 2017-08-08 16:29:51
    城市、州和邮政编码存储在不同的列中(应该这样),但邮件标签打印程序需要把它们作为一个有恰当格式的字段检索出来。列数据是大小写混合的,但报表程序需要把所有数据按大写表示出来。物品订单表存储物品的价格和...
  • 常用数据库的字段类型及大小

    万次阅读 2016-05-21 12:01:06
    racle/MSSQL/Mysql 常用数据库的字段类型及大小 ORACLE的数据类型 常用的数据库字段类型如下: 字段类型 中文说明 限制条件 其它说明 CHAR 固定长度字符串 最大长度2000 bytes ` VARCHAR2 可变长度的字符串...
  • 第五章 信息法与综合性信息检索 目录: 5.1 信息法概述 5.1.1 信息法的概念 从广义上讲,信息法是调整信息活动中产生的各种社会关系的法律规范的总称。 一般来说,信息法由信息资源管理法、政府信息公开法、信息...
  • php拼音检索

    千次阅读 2017-12-12 22:06:33
    1. 系统使用拼音搜索,表里面加入三个字段即可 即 拼音字段 pinyin 首字母字段 first_word 简写字段 short_cut 如下表: id city pinyin first_word short_cut 1 北京 beijing b bj 2 杭州 hangzhou h hz 3 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 68,634
精华内容 27,453
关键字:

常见检索字段