elasticsearch6.5.4索引

elasticsearch6.5.4索引

一:创建索引

1.依赖 elasticsearch包,pip install elasticsearch 安装
2.python2

# -*- coding: utf-8 -*-
import json
from elasticsearch import Elasticsearch
from elasticsearch.helpers import bulk
ES_HOST = '127.0.0.1'  # es ip
ES_USER = ''  # es 账号
ES_PASSWD = ''  # es 密码
ES_PORT = 9002  # es 端口


class ES():
    def __init__(self):
        self.es = Elasticsearch([ES_HOST], http_auth=(ES_USER,ES_PASSWD), port=ES_PORT, timeout=300)

    def create_index(self, index):
        mappings = {
		    "settings": {
				"number_of_shards": 3,  # 数据自动会分成3片存放在不同的节点,提高数据检索速度
				"number_of_replicas": 0  # 创建0个副本集,如果ES是集群,设置多副本会自动将副本创建到多个节点;设置多副本可以增加数据库的安全性,但是插数据的时候,会先向主节点插入数据,之后再向其余副本同步,会降低插入数据速度,差不多会降低1.4到1.6倍
		    },
		    "mappings": {
		        "book": {  # 索引名
				    "dynamic": True,  # 开启自动添加字段
				    "numeric_detection" : True  # 数字自动检测,当执行索引操作时,如果符合float型,就会自动创建为float
				    "properties": {
						"author": {"type": "text", "boost": 2},
						"characters": {"type": "text"},
						"copies": {"type": "long", "ignore_malformed": False},
						"otitle": {"type": "text"},
						"tags": {"type": "text"},
						"title": {"type": "text"},
						"year": {"type": "long", "ignore_malformed": False, "index": True},
						"available": {"type": "boolean"}
					}
				}
	   		}
		}
		rtn = self.es.indices.create(index=index, body=mappings, ignore=400)
        print rtn

if __name__ == '__main__':
    es = ES()
    index = 'test_01'
    es.create_index(index)

二:分片和副本

Elasticsearch索引是由一个或多个分片组成的,每个分片包含了文档集的 一部分。而且这些分片也可以有副本,它们是分片的完整副本。在创建索引的过程中,可以规定 应创建的分片及副本的数量。也可以忽略这些信息,直接使用Elasticsearch内部实现的默认值(5个分片及1个副本)。
一般而言,同时具有分片和与其相应的副本,意味着建立索引文档时,两者都得修改。这是 因为要使分片得到精确的副本,Elasticsearch需将分片的变动通知所有副本。 要读取文件,可 以使用分片或者其副本。在具有许多 理节点的系统中,可以把分片和副本放置于不同节点上, 从而发 更多处理能力(如磁盘I/O或CPU)。

三:映射配置

Elasticsearch是一个无模式的搜索引擎,可以即时算出数据结构。

数据类型
字符串text
数字integer、byte、short、long、float、double
日期date
布尔boolean
二进制binary

属性
index: true or false 是否编入索引。默认为true。将index设置为false,则不索引,即不能对其检索
store:true or false 原始值是否编入_source。默认false,当某个数据字段很大,我们可以指定其它字段store为true,这样就不用从_source中取数据,这时候会在 _source 存储之外再为这个字段独立进行存储。
boost:数值,boost的值越高,字段中值的重要性越高

你可能感兴趣的:(elasticsearch)