elasticsearch(七)----映射与结构化查询

映射

  • 前面我们创建的索引以及插入数据,都是由Elasticsearch进行自动判断类型,有些时候我们是需要进行明确字段类型的,否则,自动判断的类型和实际需求是不相符的。
  • 自动判断的规则如下:
    在这里插入图片描述
  • Elasticsearch中支持的类型如下:
    在这里插入图片描述
  • text和keyword的区别
    • 准确数据类型: keyword,直接被存储为了二进制,检索时我们直接匹配,不匹配就返回false 没有进行分词操作. 只能通过精确值搜索到。
    • 全文文本类型: text,这个的检索不是直接给出是否匹配,而是检索出相似度,进行分词操作, 并按照相似度由高到低返回结果
      创建映射索引
  • put localhost:9200/jie
{
	"settings": {
		"index": {
			"number_of_shards": "2",
			"number_of_replicas": "0"
		}
	},
	"mappings": {
		"person": {
			"properties": {
				"name": {
					"type": "text"
				},
				"age": {
					"type": "integer"
				},
				"mail": {
					"type": "keyword"
				},
				"hobby": {
					"type": "text"
				}
			}
		}
	}
}
  • 查看映射 localhost:9200/jie/_mapping
{
    "jie": {
        "mappings": {
            "person": {
                "properties": {
                    "age": {
                        "type": "integer"
                    },
                    "hobby": {
                        "type": "text"
                    },
                    "mail": {
                        "type": "keyword"
                    },
                    "name": {
                        "type": "text"
                    }
                }
            }
        }
    }
}

结构化查询

term查询

  • 主要用于精确匹配哪些值,比如数字,日期,布尔值或 not_analyzed 的字符串(未经分析的文本数据类型):
// 查询格式
{ "term": { "age": 26 }}
{ "term": { "date": "2014-09-01" }}
{ "term": { "public": true }}
{ "term": { "tag": "full_text" }}

terms查询

  • terms 跟 term 有点类似,但 terms 允许指定多个匹配条件。 如果某个字段指定了多个值,那么文档需要一起去做匹配:
//格式
{
	"terms": {
		"tag": ["search","full_text","nosql"]
	}
}

range查询

  • range 过滤允许我们按照指定范围查找一批数据
// 格式
{
	"range": {
		"age": {
			"gte": 20,
			"lt": 30
		}
	}
}

exists查询

  • exists 查询可以用于查找文档中是否包含指定字段或没有某个字段,类似于SQL语句中的 IS_NULL 条件
//格式  :   
//如下表示查询title字段不为空的数据  相当于sql的  is not null 
{
	"exists": {
		"field": "title"
	}
}

match查询

  • match 查询是一个标准查询,不管你需要全文本查询还是精确查询基本上都要用到它。
  • 如果你使用 match 查询一个全文本字段,它会在真正查询之前用分析器先分析 match 一下查询字符
"match": {
    "content" : {
        "字段名称" : "查询内容"
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值