python中怎么对elasticsearch进行操作,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
用 python 操作 elasticsearch 使用的第三方库是 elasticsearch 。
1.python连接 elasticsearch 进行搜索
from elasticsearch import Elasticsearches = Elasticsearch([{'host': settings.ELASTICSEARCH_HOST, 'port': settings.ELASTICSEARCH_PORT}],timeout=3600) # 连接esbody = \ { "query": { "bool": { "filter": { "terms": {"type_id": [1, 3, 4, 5, 6]} }, "must_not": { "terms": { "_id": must_not_list } } , "must": { "range": { "video_date": { "gte": "now-24h+8h", "lte": "now+8h" } } } } }, "sort": {"video_like": {"order": "desc"}}, "from": start, "size": size } data = es.search(body=body, index=settings.ELASTICSEARCH_INDEX)
host 是 ES 的主机IP,port 是 ES 的端口号,搜索是调用 search 方法。body是 搜索的body体,index是要搜索的索引名称,返回结果的结构是 json 格式,和直接操作es返回的结果一样。
2. python 连接 elasticsearch 增加文档
es = Elasticsearch([{'host': settings.ELASTICSEARCH_HOST, 'port': settings.ELASTICSEARCH_PORT}], timeout=3600)action = { "type_id": now_ameme_data.get("type_id"), "video_comment": now_ameme_data.get("video_comment"), "share_count": now_ameme_data.get("share_count"), "video_url": now_ameme_data.get("video_url"), "category_id": now_ameme_data.get("category_id"), "video_title": now_ameme_data.get("video_title"), "user_id": now_ameme_data.get("user_id"), "price": now_ameme_data.get("price"), "video_like": now_ameme_data.get("video_like"), "video_date": now_ameme_data.get("video_date"), "updata_time": now_ameme_data.get("update_time"), "video_img_url": now_ameme_data.get("video_img_url"), "label": label}es.index(index="aweme_smart", body=action, id=aweme_id)
新增文档使用的是 index 方法,也可以为文档指定 id。action 里面的字段要和 es 文档的字段对应上。
看完上述内容,你们掌握python中怎么对elasticsearch进行操作的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。