美文网首页
164Elasticsearch 基础入门--elasticse

164Elasticsearch 基础入门--elasticse

作者: Jachin111 | 来源:发表于2021-09-24 07:07 被阅读0次

    实验原理

    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 基础入门--elasticse

          本文链接:https://www.haomeiwen.com/subject/nbbagltx.html