MATLAB R2018a vs R2021b:在Ubuntu 20.04上双版本共存与切换实战指南
2026/5/6 17:59:29
user_logsorder_records⚠️工程建议:
_id{"user_id":"u123","action":"login","timestamp":"2025-01-01T10:00:00"}❗一旦字段类型确定,几乎不可修改
通用建议:
1~3shards1从8.x 开始默认开启安全机制:
👉Python 客户端必须显式配置认证
pipinstallelasticsearch>=8.12.0验证版本:
fromelasticsearchimport__version__print(__version__)fromelasticsearchimportElasticsearch es=Elasticsearch(hosts=["https://localhost:9200"],basic_auth=("elastic","your_password"),verify_certs=False# 本地测试可关闭,生产请开启)print(es.info())es=Elasticsearch(hosts=["https://es-prod.example.com:9200"],basic_auth=("elastic","password"),ca_certs="/etc/elasticsearch/certs/http_ca.crt")INDEX_NAME="user_action_logs"mapping={"settings":{"number_of_shards":2,"number_of_replicas":1},"mappings":{"properties":{"user_id":{"type":"keyword"},"action":{"type":"keyword"},"message":{"type":"text"},"ip":{"type":"ip"},"created_at":{"type":"date"}}}}ifnotes.indices.exists(index=INDEX_NAME):es.indices.create(index=INDEX_NAME,body=mapping)es.index(index=INDEX_NAME,id="u123_001",document={"user_id":"u123","action":"login","message":"user login success","ip":"127.0.0.1","created_at":"2025-01-01T10:00:00"})fromelasticsearch.helpersimportbulk actions=[]foriinrange(1000):actions.append({"_index":INDEX_NAME,"_id":f"u123_{i}","_source":{"user_id":"u123","action":"click","message":f"click{i}","ip":"127.0.0.1","created_at":"2025-01-01T10:00:00"}})bulk(es,actions,request_timeout=60)工程建议:
_id,保证幂等res=es.search(index=INDEX_NAME,query={"term":{"action":"login"}})res=es.search(index=INDEX_NAME,query={"bool":{"must":[{"term":{"user_id":"u123"}}],"filter":[{"range":{"created_at":{"gte":"now-1d"}}}]}},size=20,sort=[{"created_at":"desc"}])res=es.search(index=INDEX_NAME,size=0,aggs={"action_count":{"terms":{"field":"action"}}})res=es.search(index=INDEX_NAME,size=10,sort=[{"created_at":"desc"},{"_id":"desc"}])last_sort=res["hits"]["hits"][-1]["sort"]res_next=es.search(index=INDEX_NAME,size=10,search_after=last_sort,sort=[{"created_at":"desc"},{"_id":"desc"}])classESClient:def__init__(self,hosts,username,password,ca_certs=None):self.client=Elasticsearch(hosts=hosts,basic_auth=(username,password),ca_certs=ca_certs,)defindex_doc(self,index,doc_id,doc):returnself.client.index(index=index,id=doc_id,document=doc)defsearch(self,index,query,size=10):returnself.client.search(index=index,query=query,size=size)body=写 search(已废弃)如果你: