索引

创建索引

PUT /index_name

{
    "settings": {
        //  主分片个数,默认值是 `5`。这个配置在索引创建后不能修改
        "number_of_shards": 5,
      
        //  复制分片个数,默认是 `1`。这个配置可以随时在活跃的索引上修改
        "number_of_replicas": 1,
      
        //  配置分析器
        "analysis": {
            "analyzer": {
                //  es_std 分析器不是全局的,它仅仅存在于我们定义的 spanish_docs 索引中
                "es_std": {
                    //  standard 分词器,在词层级上分割输入的文本
                    //  lowercase 标记过滤器,将所有标记转换为小写
                    //  stop 标记过滤器,删除所有可能会造成搜索歧义的停用词(如 a,the,and,is);
                    //    默认情况下,停用词过滤器是被禁用的。
                    //    如需启用它,你可以通过创建一个基于 standard 分析器的自定义分析器,并且设置 stopwords 参数。
                    "type":      "standard",
                    "stopwords": "_spanish_"
                },
              
                //  分析器 是三个顺序执行的组件的结合(字符过滤器,分词器,标记过滤器)
              
                //  ①【字符过滤器】是让字符串在被分词前变得更加"整洁"。
                "char_filter": {
                    "&_to_and": {
                        "type":       "mapping",
                        "mappings": [ "&=> and "]
                    }
                },
                "filter": {
                    "my_stopwords": {
                        "type":       "stop",
                        "stopwords": [ "the", "a" ]
                    }
                },
                "tokenizer":   { ...    custom tokenizers     ... },
                "analyzer": {
                    "my_analyzer": {
                        
                        "type":         "custom",
                        "char_filter":  [ "html_strip", "&_to_and" ],
                        //  使用 standard 分词器分割单词
                        "tokenizer":    "standard",
                        //  使用 lowercase 标记过滤器将词转为小写 —— lowercase
                        //   stop 标记过滤器去除一些自定义停用词 —— my_stopwords
                        "filter":       [ "lowercase", "my_stopwords" ]
                    }
                },
              
                //  ②【分词器】一个分析器 必须 包含一个分词器,分词器将字符串分割成单独的词(terms)或标记(tokens)
                //    standard 分词器将字符串分割成单独的字词,删除大部分标点符号
                //    keyword 分词器输出和它接收到的相同的字符串,不做任何分词处理
                //    whitespace 分词器]只通过空格来分割文本
                //    pattern 分词器]可以通过正则表达式来分割文本
              
                //  ③【标记过滤器】分词结果的 标记流 会根据各自的情况,传递给特定的标记过滤器
                //    stemmer 标记过滤器将单词转化为他们的根形态(root form)
                //    ascii_folding 标记过滤器会删除变音符号,比如从 très 转为 tres
                //    ngram  edge_ngram 可以让标记更适合特殊匹配情况或自动完成
                //    lowercase 标记过滤器
                //    stop 标记过滤器
              
            }
        }
    },
    "mappings": {
        "type_one": { ... any mappings ... },
        "type_two": { ... any mappings ... },
        ...
    }
}