Elasticsearch属性单词常用解析说明

 更新时间:2021-09-22 21:53:23   作者:佚名   我要评论(0)

一、前言
      说实话,刚测试ES的时候,我的内心是崩溃的,好多单词都不知道代表什么意思,只能一边测试,

一、前言

      说实话,刚测试ES的时候,我的内心是崩溃的,好多单词都不知道代表什么意思,只能一边测试,一边查询。看到就赶紧记下来,一天下来,也算是学的七七八八吧。这里分享给大家。

二、ES常见单词解释

1、url请求中的参数:

curl -XPOST 'localhost:9200/bank/type1/_search?pretty' -d '
{
"query": { "match_all": {} }
}'
(1)9200后面的bank是索引名字
(2)type1代表es的type,类似于传统数据库的table
(3)pretty:pretty是将返回的信息以可读的JSON形式返回

2、_source字段:

      这个字段代表是否存储在原始文档。如果设置为true,那么查询之后,会在hits.hits里面有个_source数组,展示原始文档。
_source可以限制存储部分字段,或者不存储部分字段,形如:

 "yourtype":{
   		 "_source":{
       		 "includes":["field1","field2"]   //这两个字段会存储在原始文档
  		  },
   		 "properties": {
      		  ... 
   		 }
	}
 "yourtype":{
   		 "_source":{
       		 "excludes":["field1","field2"]  //这两个字段不会存储在原始文档
  		  },
   		 "properties": {
      		  ... 
   		 }
	}

3、_all的配置:

      这个属性的配置方法和_source类似,它是把一个文档里面的所有信息都放到一起组合成一个大字段。我们可以设置这个字段包含所有的字段,也可以设置只包含几个字段,或者是只存储几个字段

(1)包含所有字段

"yourtype": {
 	 "_all": {
     	"enabled": true  //这样设置的话,就包含了所有的字段
 	 },}

(2)包含或者不包含部分字段

 "yourtype": {
      "properties": {
         "field1": {
             "type": "string",
             "include_in_all": false   //这个字段不包含在_all
          },
          "field2": {
             "type": "string",
             "include_in_all": true  //这个字段包含在_all
          }
      }
   }

4、highlight 高亮显示:

这个字段类似于咱们百度的时候,符合预期文字的部分都会高亮显示出红色来

(1)可以在查询时指定高亮字段或者全部高亮

 "query": {
  		"match": {
    		 "_all": "中国人"
		  }
  },
	"highlight": {
 		 "fields": {
     		//"_all": {}    //这是对_all字段进行高亮查询
	//"title": {}  //这是对title字段进行高亮显示
	  }
  }

5、设置字段的index属性。

这个属性是控制该字段是否生成倒排索引,取值主要有三个:

(1)analyzed:字段被索引,会做分词,可搜索。反过来,如果需要根据某个字段进搜索,index属性就应该设置为analyzed。
(2)not_analyzed:字段值不分词,会被原样写入索引。反过来,如果某些字段需要完全匹配,比如人名、地名,index属性设置为not_analyzed为佳。
(3)no:字段不写入索引,当然也就不能搜索。反过来,有些业务要求某些字段不能被搜索,那么index属性设置为no即可。

类似于:

(1)analyzed:字段被索引,会做分词,可搜索。反过来,如果需要根据某个字段进搜索,index属性就应该设置为analyzed。
(2)not_analyzed:字段值不分词,会被原样写入索引。反过来,如果某些字段需要完全匹配,比如人名、地名,index属性设置为not_analyzed为佳。
(3)no:字段不写入索引,当然也就不能搜索。反过来,有些业务要求某些字段不能被搜索,那么index属性设置为no即可。

6、store属性:

用于指定是否将原始字段写入索引,默认取值为no。

      因为在Lucene中,高亮功能和store属性是否存储息息相关,因为需要根据偏移位置到原始文档中找到关键字才能加上高亮的片段。在Elasticsearch,因为_source中已经存储了一份原始文档,可以根据_source中的原始文档实现高亮,在索引中再存储原始文档就多余了,所以Elasticsearch默认是把store属性设置为no。
注意: 如果想要对某个字段实现高亮功能,_source和store至少保留一个。

参考:https://blog.csdn.net/mlljava1111/article/details/70598481

7、took :该请求花了多少毫秒 (took)

8、_shards:

      描述了查询分片的信息,查询了多少个分片、成功的分片数量、失败的分片数量等猜测这个字段代表该次查询,获取数据经过的分片数量之和

9、hits:

搜索的结果,total是全部的满足的文档数目,hits是返回的实际数目(默认是10)

10、max_score和_score :

代表的是查询结果的评分值,分越高,代表权重越大,排名越靠前。具体的参考:

https://blog.csdn.net/paditang/article/details/79098830

有的时候我们可能对分数不感兴趣,就可以使用filter进行过滤,它不会去计算分值,因此效率也就更高一些

11、Routing:Elasticsearch的路由机制

      我们可以通过制定路由,而避免ES自己进行大量的广播操作。直接按照我们制定的路由找到对应的分片查询,关于路由机制,我们不做赘述,只是了解下就行。

具体请参考:https://blog.csdn.net/cnweike/article/details/38531997

12、term和trems:

这两个是精准查找,一个是单数,一次查找单个值。一个是复数,一次查找多个值。

例如:"terms" : {
    	"price" : [20, 30]
	}

13、先看个语句:

	GET _search
{
  "query": {
    "filtered": {
      "query": {
        "match": {
          "text": "quick brown fox"
        }
      },
      "filter": {
        "term": {
          "status": "published"
        }
      }
    }
  }
}

(1) 这里的"filtered": 从ES5.0之后被移除了。

(2) filter代表过滤匹配,也是为了过滤status字段,让它不去计算的分数,不用计算权重等。

新的语句为:

GET _search
{
  "query": {
    "bool": {
      "must": {
        "match": {
          "text": "quick brown fox"
        }
      },
      "filter": {
        "term": {
          "status": "published"
        }
      }
    }
  }
}

(3) bool代表的是bool查询,参数主要有:

must
所有的语句都 必须(must) 匹配,与 AND 等价。
must_not
所有的语句都 不能(must not) 匹配,与 NOT 等价。
should
至少有一个语句要匹配,与 OR 等价

到此这篇关于Elasticsearch属性单词常用解析说明的文章就介绍到这了,更多相关Elasticsearch属性单词解析内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
  • Java使用elasticsearch基础API使用案例讲解
  • Django对接elasticsearch实现全文检索的示例代码
  • 解决Elasticsearch因jdk版本问题启动失败的问题
  • spring-data-elasticsearch @Field注解无效的完美解决方案
  • Elasticsearch中store field与non-store field的区别说明
  • Elasticsearch 映射参数详解 fields
  • 基于ElasticSearch Analyzer的使用规则详解
  • Java elasticSearch-api的具体操作步骤讲解

相关文章

  • Elasticsearch属性单词常用解析说明

    Elasticsearch属性单词常用解析说明

    一、前言       说实话,刚测试ES的时候,我的内心是崩溃的,好多单词都不知道代表什么意思,只能一边测试,
    2021-09-22
  • PHP 修改SESSION的生存时间案例详解

    PHP 修改SESSION的生存时间案例详解

    需求背景: 用户希望他登录之后,浏览器就帮他记住登录状态,这样他就不用每次进入的时候,都需要登录一次。 session过期时间: 如果我们没有
    2021-09-22
  • HTTP中header头部信息详解

    HTTP中header头部信息详解

    HTTP Request的Header信息 1、HTTP请求方式 如下表: GET 向Web服务器请求一个文件
    2021-09-22
  • laravel多视图共享数据实例代码

    laravel多视图共享数据实例代码

    目录前言在视图间共享数据 视图Composer 添加 Composer 到多个视图 总结前言 在做项目中,网站前台或者后台有些数据需要在多个视图页面使
    2021-09-22
  • php fopen()函数案例详解

    php fopen()函数案例详解

    定义和用法 fopen() 函数打开文件或者 URL。 如果打开失败,本函数返回 FALSE。 语法 fopen(filename,mode,include_path,context)
    2021-09-22
  • php floor()函数案例详解

    php floor()函数案例详解

    floor() 函数向下舍入为最接近的整数。 语法 floor(x) 参数 描述 x
    2021-09-22
  • 图文详解laravel多对多关联模型

    图文详解laravel多对多关联模型

    关联模型(多对多) 多对多关系(抽象) 例:一篇文章可能有多个关键词,一个关键词可能被多个文章使用。 关键词表:
    2021-09-22
  • php比较两个指定的日期的实例讲解

    php比较两个指定的日期的实例讲解

    1、给定的日期格式相同,则使用简单的比较运算符来比较日期。 <&#63;php //声明两个日期、初始化 $date1 = "2021-11-24"; $date2 = "2001-
    2021-09-22
  • php有序列表或数组中删除指定的值的实现代码

    php有序列表或数组中删除指定的值的实现代码

    实现:删除给定的值之后,得到一个新的有序列表,长度-1 代码: <&#63;php /** * Created by PhpStorm. * User: wkk * Time: 2021/7/11
    2021-09-22
  • PHP中多字节字符串操作实例详解

    PHP中多字节字符串操作实例详解

    目录前言字符串操作 字符串正则操作 字符串编码转换 HTTP 参数操作 其它属性查看 总结 前言 什么是多字节的字符串操作呢?其实不少的同
    2021-09-22

最新评论