![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
elasticsearch学习
Cape_sir
这个作者很懒,什么都没留下…
展开
-
elasticsearch学习14--mapping设计指南
一、Mapping简介Mapping 类似于数据库中的表结构定义 schema,它有以下几个作用:1、定义索引中字段的名称;2、定义字段的数据类型,比如 text、keyword、date;3、倒排索引的相关配置,比如设置某个字段为不被索引;二、基础配置1、propertiesmappings、object字段和nested字段包含的子字段就叫做 properties,示例:PUT my_index{ "mappings": { "properties": { "原创 2020-11-30 15:21:24 · 263 阅读 · 0 评论 -
elasticsearch学习13--Compound queries 之 Bool query
1、ES的两种上下文1)Query context 查询上下文查询子句关注“此文档与该查询子句的匹配程度如何?”,除了确定文档是否匹配之外,查询子句还计算_score元字段中的相关性得分 。2)Filter context过滤器上下文查询子句关注“此文档是否与此查询子句匹配?" ,答案很简单,是或否,不计算分数。过滤器上下文主要用于过滤结构化数据。2、Bool query 简介布尔查询映射到LuceneBooleanQuery。它是使用一个或多个布尔子句构建的,每个子句都有固定的类型。Bool原创 2020-11-30 14:37:44 · 202 阅读 · 0 评论 -
elasticsearch学习12--Term-level queries之仅用于了解的query
1、regexp query——使用正则表达式术语查询POST /your_index/_search{ "query": { "regexp":{ "name.first": "s.*y" } }}注意:regexp查询的性能在很大程度上取决于所选的正则表达式。匹配所有类似的东西.*都很慢,而且使用环视正则表达式也很慢。如果可能,应在正则表达式开始之前尝试使用长前缀。2、type query筛选与提供的文档/映射类型原创 2020-11-27 19:25:10 · 80 阅读 · 0 评论 -
elasticsearch学习11--Term-level queries之三种模糊查询、exists query与terms_set query
本文采用的数据是elasticsearch学习10–Term-level queries之Range query中添加的。首先讲三种模糊查询wildcard query、prefix query和fuzzy query1、wildcard query通配符 *:它匹配任何字符序列(包括空字符)占位符?:它匹配任何单个字符。请注意,此查询的速度可能很慢,因为它需要迭代许多项。为了防止极慢的通配符查询,通配符术语不应以通配符*或?之一开头。1)通配符 *POST /blogs_index/_s原创 2020-11-27 17:29:44 · 952 阅读 · 0 评论 -
elasticsearch学习10--Term-level queries之Range query
一、对日期字段的范围查询在学习本文之前,请先参考【elasticsearch学习9–Term-level queries简介、term query与terms query】完成 blogs_index 索引的创建,同时批量导入如下数据:POST _bulk{"index":{"_index":"blogs_index","_type":"_doc","_id":"1"}}{"id":1,"author":"大衣哥","title":"昨日博客","influence":{"gte":10,"lte"原创 2020-11-27 15:25:08 · 255 阅读 · 0 评论 -
elasticsearch学习9--Term-level queries简介、term query与terms query
1、Term-level queries 简介Term-level queries 术语级查询就是根据结构化数据中的精确值查找文档。与 Full text queries全文查询的不同之处在于,术语级查询不会分析检索词,而是匹配存储在字段中的确切术语,简单的说就是检索词不会被分词。在介绍两种query之前先准备一下数据。创建blogs_index和tags_index,并添加数据。PUT /blogs_index{ "settings": { "index": { "numb原创 2020-11-27 11:18:58 · 729 阅读 · 1 评论 -
elasticsearch学习8--Full text queries全文检索之multi_match 、query_string 与simple_query_string query
本文将继续使用elasticsearch学习7–Full text queries全文检索之match_phrase query与match_phrase_prefix query中的数据。数据内容如下(具体mapping见elasticsearch学习7):{ “id” : 1,“content”:“关注我,系统学编程” }{ “id” : 2,“content”:“系统学编程,关注我” }{ “id” : 3,“content”:“系统编程,关注我” }{ “id” : 4,“content”原创 2020-11-26 19:40:49 · 596 阅读 · 0 评论 -
elasticsearch学习7--Full text queries全文检索之match_phrase与match_phrase_prefix query
同样我们先创建一个index,并添加数据。# 创建indexPUT /test_003{ "settings": { "index": { "number_of_shards": 1, "number_of_replicas": 1 } }, "mappings": { "_doc": { "dynamic": false, "properties": { "id": { "type原创 2020-11-26 15:57:07 · 412 阅读 · 0 评论 -
elasticsearch学习6--Full text queries全文检索之match query
首先创建一个indexPUT /test_001{ "settings": { "index": { "number_of_shards": 1, "number_of_replicas": 1 } }, "mappings": { "_doc": { "dynamic": false, "properties": { "id": { "type": "integer"原创 2020-11-26 14:48:27 · 251 阅读 · 0 评论 -
elasticsearch学习5--ik分词器:ik_smart 和 ik_max_word
1、ik分词器的安装第一步:下载下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases第二步:解压并添加将下载的压缩包解压,然后将解压后的文件放入plugins/ik文件夹第三步:重启ES2、ik_smart 和 ik_max_wordik_smart: 粗粒度分词ik_max_word:细粒度分词我们先看一下不使用分词器的分词效果,默认将文字拆除一个字一个字的接着使用粗粒度分词ik_smart,分词效果如下原创 2020-11-17 17:28:39 · 4296 阅读 · 1 评论 -
elasticsearch学习4--倒排索引与分词
一、倒排索引1.正向索引ID作者文章标题文章内容1Cape1es索引努力学习倒排索引2Cape2mysql索引学习普通索引以上述内容为例,构建id正向索引和文章标题正向索引索引文章内容1努力学习倒排索引2学习普通索引es索引努力学习倒排索引mysql索引学习普通索引当我们知道文章id或者文章题目的时候,可以很容易的检索到文章的内容。但是,如果我们只知道文章中的某个关键词,例如需要检索到与“倒排索引”有关原创 2020-11-09 17:06:53 · 113 阅读 · 0 评论 -
elasticsearch学习3--索引与文档的CURD
CURD代表创建(Create)、更新(Update)、读取(Retrieve)和删除(Delete)操作。一、索引的CURD1.创建```html{ "settings": { "index": { "number_of_shards": 1, "number_of_replicas": 1 } }, "mappings": { "dynamic": false, "properties": { "id": {原创 2020-11-09 15:20:12 · 165 阅读 · 0 评论 -
ES附录1: dynamic mapping(动态映射)
今天有小伙伴问,Elasticsearch 索引里面的mapping 设置 dynamic = true是什么意思?一:ES mapping dynamic是做什么用的Mapping中的字段类型一旦设定后,禁止直接修改。原因是:Lucene实现的倒排索引生成后不允许修改只能新建一个索引,然后reindex数据默认允许新增字段通过dynamic参数来控制字段的新增:true:默认,允许自动新增字段,但是mapping不显示,查询返回JSON有false:不允许自动新增字段,但转载 2020-10-23 18:43:51 · 315 阅读 · 0 评论 -
elasticsearch学习1--需要注意的数据格式
一、StringString类型可以和java的string、mysql的varchar等同,但是为何会分为text、keyword呢?这两者又有什么区别?ES作为全文检索引擎,它强大的地方就在于分词和倒排序索引。而 text 和 keyword 的区别就在于是否分词(ps:什么叫分词?举个简单例子,“中国我爱你”这句话,如果使用了分词,那么这句话在底层的储存可能就是“中国”、“我爱你”,被拆分成了两个关键字)1.text–会分词以“中国我爱你”为例,可能会被分词为“中国”、“我爱你”,也可能是“中原创 2020-10-22 16:21:01 · 596 阅读 · 0 评论 -
elasticsearch学习2--es6.x和es7.x版本的es head使用
1.添加索引1.1 elasticsearch7.x{ "mappings": { "properties": { "field1": { "type": "text" } } }}1.2 elasticsearch6.x{ "mappings": { "_doc": { "properties": { "field1": { "type": "text"原创 2020-10-21 16:23:35 · 710 阅读 · 0 评论