elasticsearch 映射 fields(elasticsearch连接)

1. 创建index,命名为twitter

PUT localhost:9200/twitter

elasticsearch 映射 fields(elasticsearch连接)

{

“settings”:{“number_of_shards”:1}

}

设置shard分片数为1(Elasticsearch 7.0之后,默认为1,不再是5)。

随后,也修改 number_of_replicas=0。

master 节点名称:_Yg0Q2v

2. 为现有索引定义mapping 映射

根据Elasticsearch最佳实践,建议完成mapping设定后,再写入document数据。

{

“properties”: {

“address”: {

“type”: “text”,

“fields”: {

“keyword”: {

“type”: “keyword”,

“ignore_above”:256

}

}

},

“city”: {

“type”: “keyword”

},

“country”: {

“type”: “keyword”

},

“location”: {

“type”: “geo_point”

},

“province”: {

“type”: “keyword”

},

“uid”: {

“type”: “long”

},

“user”: {

“type”: “text”,

“fields”: {

“keyword”: {

“type”: “keyword”,

“ignore_above”: 256

}

}

}

}

}

对于只需要做精确匹配的字段,应该设置为不做分词,这里通过type=keyword来设定。

通过 GET twitter/_mapping 验证一下创建完成的mapping映射。

地理位置数据类型:geo_point

地理位置,其值可以有如下四中表现形式:

  • object对象:”location”: {“lat”: 41.12, “lon”: -71.34}
  • 字符串:”location”: “41.12,-71.34”
  • geohash:”location”: “drm3btev3e86”
  • 数组:”location”: [ -71.34, 41.12 ]

3. 创建具有显式映射的索引

也可以将创建index和mapping 合并在一步完成。

创建索引 twitter2 以及对应的mapping映射。

因为在本地localhost环境,特意设置number_of_shards=1和number_of_replicas=0,生产环境根据实际情况进行设置。

PUT twitter2/

{

“settings”:{

“number_of_shards”: 1,

“number_of_replicas”: 0

},

“mappings”: {

“_doc” : {

“properties”: {

“address”: {

“type”: “text”,

“fields”: {

“keyword”: {

“type”: “keyword”,

“ignore_above”:256

}

}

},

“city”: {

“type”: “keyword”

},

“country”: {

“type”: “keyword”

},

“location”: {

“type”: “geo_point”

},

“province”: {

“type”: “keyword”

},

“uid”: {

“type”: “long”

},

“user”: {

“type”: “text”,

“fields”: {

“keyword”: {

“type”: “keyword”,

“ignore_above”: 256

}

}

}

}

}

}

}

上述脚本在Elasticsearch 6.4.3 环境执行成功。

执行返回结果:

{

“acknowledged”: true,

“shards_acknowledged”: true,

“index”: “twitter2”

}

如果在Elasticsearch 7.3.0 环境中,去除”_doc” 节点,可以实现相同的效果,同时创建好索引twitter2和对应的mapping。

在Elasticsearch 7.3.0环境中,执行完成,返回结果。

{

“acknowledged” : true,

“shards_acknowledged” : true,

“index” : “twitter2”

}

如下是创建具有显式映射的索引在Elasticsearch 6.* 和 7.* 版本的官方文档。其中差异部分,进行了标识,主要在7.* 版本中,已经移除了type类型。

4. 插入document 数据

(1)单条doc插入;

POST twitter/_doc/1

{

“user”:”good man”,

“uid”:1,

“city”: “武汉”,

“province”: “湖北”,

“country”: “中国”,

“location”: {

“lat”: “29”,

“lon”: “111”

}

}

(2)批量操作 bulk

POST _bulk

{“index”: {“_index”: “twitter”, “_type”:”_doc”}}

{“user”:”rickie”, “uid”: 2, “city”:”shanghai”, “province”:”shanghai”,”country”:”China”, “address”:”No. 1801″, “location”:{“lat”:”21″, “lon”:”100″}}

{“index”: {“_index”: “twitter”, “_type”:”_doc”}}

{“user”:”abc”, “message”:”hello world”, “uid”: 3,”age”:20, “city”:”上海”, “province”:”shanghai”,”country”:”中国”, “address”:”#1801″, “location”:{“lat”:”21″, “lon”:”100″}}

{“index”: {“_index”: “twitter”, “_type”:”_doc”}}

{“user”:”康小姐”, “message”:”hello world”, “uid”: 4,”age”:20, “city”:”北京”, “province”:”北京”,”country”:”China”, “address”:”#1801″, “location”:{“lat”:”21″, “lon”:”100″}}

{“index”: {“_index”: “twitter”, “_type”:”_doc”}}

{“user”:”tom”, “message”:”hello tom”, “uid”: 5,”age”:36, “city”:”shanghai”, “province”:”shanghai”,”country”:”China”, “address”:”#1801″, “location”:{“lat”:”21″, “lon”:”100″}}

{“index”: {“_index”: “twitter”, “_type”:”_doc”}}

{“user”:”Jacky”, “message”:”hello Jacky”, “uid”: 6,”age”:40, “city”:”shanghai”, “province”:”shanghai”,”country”:”China”, “address”:”#1801″, “location”:{“lat”:”21″, “lon”:”100″}}

document 插入完成之后,确认一下。

本站部分内容由互联网用户自发贡献,该文观点仅代表作者本人,本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如发现本站有涉嫌抄袭侵权/违法违规等内容,请联系我们举报!一经查实,本站将立刻删除。