记录python-elasticsearch7.16.2的相关操作

笔记记录下操作

建立连接对象

from elasticsearch import Elasticsearch ,helpers
ElasticsearchUserName = *
ElasticsearchPassWord = *
class Es_opt:
    def __init__(self):
        self.es_user = ElasticsearchUserName
        self.es_pwd = ElasticsearchPassWord
        self.es = Elasticsearch(["127.0.0.1"], port=9200,
                                http_auth=(ElasticsearchUserName, ElasticsearchPassWord),
                                timeout=20,
                                max_retries=10,
                                ignore=[400, 404],
                                retry_on_timeout=True)

申明字段类型

#  基本信息
BASE_INFO = {
    # "settings": {
    #     "number_of_shards": 3,
    #     "number_of_replicas": 1
    # },
    "mappings": {
        "properties": {
            "entName": { 
                "type": "text"
            },
            "Url": {  
                "type": "keyword"
            },
            "owner": { 
                "type": "keyword"
            },
            "regCapital": {  
                "type": "keyword"
            },
            "intregCapital": { 
                "type": "long"
            },
            "startDate": {  
                "type": "date",
                "format": "yyyy-MM-dd"
            },
        }
    }
}

1. 字符串类型

  • text:如果一个字段是要被全文检索的,比如说博客内容、新闻内容、产品描述,那么可以使用 text。用了 text 之后,字段内容会被分析,在生成倒排索引之前,字符串会被分词器分成一个个词项。text 类型的字段不用于排序,很少用于聚合。这种字符串也被称为 analyzed 字段。
  • keyword:这种类型适用于结构化的字段,例如标签、email 地址、手机号码等等,这种类型的字段可以用作过滤、排序、聚合等。这种字符串也称之为 not-analyzed 字段。

2.数字类型

类型取值范围
long-2^63 2^63-1
integer-2^31 2^31-1
short-2^15 2^15-1
byte-2^7 2^7-1
double64位的双精度IEEE754 浮点类型
float32位的双精度IEEE754 浮点类型
half_float16位的双精度IEEE754 浮点类型
scaled_foat缩放类型的浮点类型
  • 在满足需求的情况下,优先使用范围小的字段。字段长度越短,索引和搜索的效率越高

  • 浮点数,优先考虑使用 scaled_float。

3.日期类型

  • 2020-11-11 或者 2020-11-11 11:11:11
  • 一个从 1970.1.1 零点到现在的一个秒数或者毫秒数。

es 内部将时间转为 UTC,然后将时间按照 millseconds-since-the-epoch 的长整型来存储。

"createTime": {  # 数据创建时间
                "type": "date",
                "format": "yyyy-MM-dd HH:mm:ss"
            }
            

"createTime":{# 数据创建时间
		"type": "date",
      	"format": "yyyy-mm-dd HH:mm:ssllyyyy/mm/ddllepoch_millis"
      	}

"createTime": {  # 数据创建时间
                "type": "date",
            }
{
  "date":"2020-11-11 00:00:00"
}


{
  "date":"2020-11-11T11:11:11Z"
}



{
  "date":"1604672099958"
}

4.布尔类型(boolean)

JSON 中的 “true”、“false”、true、false 都可以。

5. 二进制类型(binary)

二进制接受的是 base64 编码的字符串,默认不存储,也不可搜索。

6.范围类型

  • integer_range
  • float_range
  • long_range
  • double_range
  • date_range
  • ip_range
"price":{
        "type":"float_range"
      }

指定范围的时,可以使用 gt、gte、lt、lte。

7. 复合类型

7.1 对象类型(object)| 7.2 嵌套类型(nested)

都可以参考 https://blog.youkuaiyun.com/PacosonSWJTU/article/details/127200021 当前连接内部说明的很详细.

创建索引

# index 索引名称
# body 数据结构
es.indices.create(index="***", body=BASE_INFO)

数据插入

1. 单条插入

for item in range(100):
	es.index(index="***",document={"value":item})

2. 批量插入

insert_list=[]
for item in range(100):
    insert_json={
        "_index":"***",  #  这里必须申请索引
        "value": item
    }
ssd = helpers.bulk(es, insert_list)

2.1 批量插入 生成器

def handle_es():
    for value in range(10000):
     #  "_index":"***",  #  这里必须申请索引
        yield {"_index": "***", "_source": {"value": value}}


if __name__ == '__main__':
    helpers.bulk(es, handle_es())

参考文章链接 https://www.cnblogs.com/Neeo/articles/10788573.html 需要的自行查看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值