164Elasticsearch 基础入门--elasticsearch之mapping

实验原理

elasticsearch mapping 简介
Mapping 对应数据库里的表定义,我们都知道数据库表有各种字段每种字段使用场景是不一样,mapping 中字段也类似数据库字段,定义形式不同搜索场景也不同 ,mapping 还有一些其他的含义,mapping 不仅告诉 ES 一个 field 中是什么类型的值,它还告诉 ES 如何索引数据以及数据是否能被搜索到,Mapping 是对于 index 上每种 type 的定义。
mapping 的字段几种定义解释
mapping 字段定义的使用,我们下面针对常用的进行说明
index: "analyzed" //分词,不分词是:not_analyzed ,设置成 no,字段将不会被索引
analyzer: "ik" //指定分词器
search_analyzer: "ik" //设置搜索时的分词器,默认跟 ananlyzer 是一致的

下面我们同 java 的方式创建 mapping 并且通过 head 插件查看

实验步骤

创建 mapping

在syl_es项目的com.syl.es下新建 CreateMapping 类

image.png

编写 mapping 方法,具体代码如下:

package com.syl.es;

import java.net.InetAddress;

import org.elasticsearch.action.admin.indices.mapping.put.PutMappingRequest;
import org.elasticsearch.client.Client;
import org.elasticsearch.client.Requests;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentFactory;

public class CreateMapping {

    /**
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) {
        //调用创建索引方法
        createMapping("user","userInfo");
    }
    /**
     * 创建索引mapping
     * @param indices 索引名称
     * @param mappingType 索引type名称
     */
     public static void createMapping(String indices,String mappingType){
            //索引服务的地址
            String elasticServer= "127.0.0.1";
            //索引服务的端口
            Integer elasticServerPort = 9300;
            Client client=null;
            try{
                //初始化连接
                Settings settings = Settings.settingsBuilder()
                         .build();
                client = TransportClient.builder().settings(settings).build()
                         .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(elasticServer), elasticServerPort));
                new XContentFactory();
                XContentBuilder builder=XContentFactory.jsonBuilder()
                .startObject()
                .startObject(mappingType)
                .startObject("properties")
                .startObject("name").field("type", "string").field("analyzer","ik").field("searchAnalyzer", "ik").endObject()//设置name为ik分词
                .startObject("nickname").field("type", "string").field("index", "not_analyzed").endObject()//设置nicknamenot_analyzed不分词
                .startObject("nativeplace").field("type", "string").field("index", "no").endObject()//设置nativeplace不索引
                .startObject("address").field("type", "string").field("index", "no").endObject()//设置nativeplace不索引
                .startObject("birthdate").field("type", "date").field("format", "yyyy-MM-dd").field("index", "not_analyzed").endObject()//设置birthdate为日期型格式
                .endObject()
                .endObject()
                .endObject();
                System.out.println(builder.toString());
                PutMappingRequest mapping = Requests.putMappingRequest(indices).type(mappingType).source(builder);
                //创建索引的mapping
                client.admin().indices().putMapping(mapping).actionGet();
                //关闭连接
                client.close();
            }catch (Exception e) {
                e.printStackTrace();
            }

        }
}

以 Java Application 的方式,运行CreateMapping.java文件 (在运行 CreateMapping.java 之前,需要创建好索引)。
访问地址栏查看 mapping 创建情况
通过浏览器访问http://127.0.0.1:9200/user/userInfo/_mapping

image.png

查看 mapping 创建情况
打开浏览器访问 head 地址 http://127.0.0.1:9200/_plugin/head打开信息->索引信息
image.png

通过查看 head 发现 mapping 已经创建成功。

你可能感兴趣的:(164Elasticsearch 基础入门--elasticsearch之mapping)