0
点赞
收藏
分享

微信扫一扫

es映射的分类

映射的分类:

(1)动态映射:

当ES在文档中碰到一个以前没见过的字段时,它会利用动态映射来决定该字段的类型,并自动地对该字段添加映射。

可以通过dynamic设置来控制这一行为,它能够接受以下的选项:

true:默认值。动态添加字段
false:忽略新字段
strict:如果碰到陌生字段,抛出异常

dynamic设置可以适用在根对象上或者object类型的任意字段上。

POST /lib2

#给索引lib2创建映射类型

{

"settings":{

"number_of_shards" : 3,

"number_of_replicas" : 0

},

 "mappings":{
 
  "books":{
  
    "properties":{
    
        "title":{"type":"text"},
        "name":{"type":"text","index":false},
        "publish_date":{"type":"date","index":false},
        
        "price":{"type":"double"},
        
        "number":{"type":"integer"}
    }
  }
 }

}

POST /lib2

#给索引lib2创建映射类型 {

"settings":{

"number_of_shards" : 3,

"number_of_replicas" : 0

},

 "mappings":{
 
  "books":{
  
    "properties":{
    
        "title":{"type":"text"},
        "name":{"type":"text","index":false},
        "publish_date":{"type":"date","index":false},
        
        "price":{"type":"double"},
        
        "number":{
            "type":"object",
            "dynamic":true
        }
    }
  }
 }

}

2.7基本查询(Query查询)

2.7.1数据准备

PUT /lib3 { "settings":{ "number_of_shards" : 3, "number_of_replicas" : 0 }, "mappings":{ "user":{ "properties":{ "name": {"type":"text"}, "address": {"type":"text"}, "age": {"type":"integer"}, "interests": {"type":"text"}, "birthday": {"type":"date"} } } } }

GET /lib3/user/_search?q=name:lisi

GET /lib3/user/_search?q=name:zhaoliu&sort=age:desc

2.7.2 term查询和terms查询

term query会去倒排索引中寻找确切的term,它并不知道分词器的存在。这种查询适合keyword 、numeric、date。

term:查询某个字段里含有某个关键词的文档

GET /lib3/user/_search/ { "query": { "term": {"interests": "changge"} } }

terms:查询某个字段里含有多个关键词的文档

GET /lib3/user/_search { "query":{ "terms":{ "interests": ["hejiu","changge"] } } }

2.7.3 控制查询返回的数量

from:从哪一个文档开始 size:需要的个数

GET /lib3/user/_search { "from":0, "size":2, "query":{ "terms":{ "interests": ["hejiu","changge"] } } }

2.7.4 返回版本号

GET /lib3/user/_search { "version":true, "query":{ "terms":{ "interests": ["hejiu","changge"] } } }

2.7.5 match查询

match query知道分词器的存在,会对filed进行分词操作,然后再查询

GET /lib3/user/_search { "query":{ "match":{ "name": "zhaoliu" } } }

GET /lib3/user/_search { "query":{ "match":{ "age": 20 } } }

match_all:查询所有文档

GET /lib3/user/_search { "query": { "match_all": {} } }

multi_match:可以指定多个字段

GET /lib3/user/_search { "query":{ "multi_match": { "query": "lvyou", "fields": ["interests","name"] } } }

match_phrase:短语匹配查询

ElasticSearch引擎首先分析(analyze)查询字符串,从分析后的文本中构建短语查询,这意味着必须匹配短语中的所有分词,并且保证各个分词的相对位置不变:

GET lib3/user/_search { "query":{
"match_phrase":{
"interests": "duanlian,shuoxiangsheng" } } }

举报

相关推荐

0 条评论