首页后端开发其他后端知识解释Elasticsearch中属性常用的一些单词

解释Elasticsearch中属性常用的一些单词

时间2024-03-25 06:58:03发布访客分类其他后端知识浏览1022
导读:在这篇文章中我们会学习到关于“解释Elasticsearch中属性常用的一些单词”的知识,小编觉得挺不错的,现在分享给大家,也给大家做个参考,希望对大家学习或工作能有帮助。下面就请大家跟着小编的思路一起来学习一下吧。 一、前言...
在这篇文章中我们会学习到关于“解释Elasticsearch中属性常用的一些单词”的知识,小编觉得挺不错的,现在分享给大家,也给大家做个参考,希望对大家学习或工作能有帮助。下面就请大家跟着小编的思路一起来学习一下吧。

一、前言

说实话,刚测试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中属性常用的一些单词已经有了进一步的了解。大家如果还想学习更多知识,欢迎关注网络,小编将为大家输出更多高质量的实用文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

Elasticsearch

若转载请注明出处: 解释Elasticsearch中属性常用的一些单词
本文地址: https://pptw.com/jishu/652614.html
yii2上传图片的操作步骤是什么 React受控和不受控组件的区别在哪,怎样用的

游客 回复需填写必要信息