做外贸哪些网站可以发布产品,wordpress列表显示文章内容,自己做网站怎么别人怎么浏览,网站开发好公司文章目录 基本操作更多查询方法1. 查询全部数据2. 针对某个确定的值/字符串的查询#xff1a;term、match3. 在多个选项中有一个匹配#xff0c;就查出来#xff1a;terms4. 数值范围查询#xff1a;range5. 多个条件同时触发 bool6. 指定返回值个数 size7. 返回指定列 _so… 文章目录 基本操作更多查询方法1. 查询全部数据2. 针对某个确定的值/字符串的查询term、match3. 在多个选项中有一个匹配就查出来terms4. 数值范围查询range5. 多个条件同时触发 bool6. 指定返回值个数 size7. 返回指定列 _source 完整示例程序 基本操作
首先连接Elasticsearch数据库然后创建一个自定义的索引
from elasticsearch import Elasticsearch
import random
from elasticsearch import helpers# 连接到本地的 Elasticsearch 服务
es Elasticsearch(hosts[http://localhost:9200])
index_name my_index# 创建一个索引名为 my_index 的索引
if es.indices.exists(indexindex_name): # 如果索引存在删除es.indices.delete(indexindex_name)
es.indices.create(indexindex_name) # 新建索引新增随机数据
这里我们创建随机数据项包含value_num与value_choice项
# 新增随机数据项
add_value_list: list []
for _ in range(1000):num random.randint(1, 100)add_value_list.append({_index: index_name, # 注意个参数决定要插入到哪个索引中value_num: random.randint(1, 100),value_choice: [c1, c2, c3][random.randint(0, 2)],})
# 批量插入数据
helpers.bulk(es, add_value_list)查询操作
# 查询操作
_body_query {query: {range: {value_num: {gte: 40, # 40lte: 60 # 60}}},size: 20, # 查询20条
}
response es.search(indexindex_name, body_body_query)
# 打印查询的结果
for _hit in response[hits][hits]:_value _hit[_source]print(value_num:, _value[value_num], value_choice:, _value[value_choice])更新数据项
这里我们将查询出的数据中通过文档ID与修改的数据重新为数据赋值
# 更新操作
for _hit in response[hits][hits]:update_body {doc: {value_choice: c4, # 更新value_choice字段为c4}}res es.update(indexindex_name, id_hit[_id], bodyupdate_body)删除数据项
# 删除操作
for _hit in response[hits][hits]:res es.delete(indexindex_name, id_hit[_id])更多查询方法
1. 查询全部数据
_body_query {query:{match_all:{}}
}2. 针对某个确定的值/字符串的查询term、match
match会执行多个term操作term操作精度更高
_body_query {query: {match: {value_choice: c1}}
}_body_query {query: {term: {value_choice: c1}}
}3. 在多个选项中有一个匹配就查出来terms
_body_query {query: {terms: {value_choice: [c1, c2],}}
}4. 数值范围查询range
查询40且60的数据
_body_query {query: {range: {value_num: {gte: 40, # 40lte: 60 # 60}}}
}5. 多个条件同时触发 bool
布尔查询可以同时查询多个条件也称为组合查询构造查询的字典数据时query后紧跟bool之后再跟bool的判断条件判断条件有下面几个
filter过滤器must类似and需要所有条件都满足should类似or只要能满足一个即可must_not需要都不满足
写完判断条件后在判断条件的list里再紧跟查询操作的具体细节
_body_query {query: {bool: {should: [{match: {value_choice: c1} # value_choice c1},{range: {value_num: {lte: 50}} # value_num 50}]}},
}6. 指定返回值个数 size
在构造的字典中添加size关键字即可
_body_query {query: {range: {value_num: {gte: 40, # 40lte: 60 # 60}}},size: 20,
}7. 返回指定列 _source
_body_query {query: {range: {value_num: {gte: 40, # 40lte: 60 # 60}}},_source: [value_num] # 这里指定返回的fields
}完整示例程序
from elasticsearch import Elasticsearch
import random
from elasticsearch import helpers# 连接到本地的 Elasticsearch 服务
es Elasticsearch(hosts[http://localhost:9200])
index_name my_index# 创建一个索引名为 my_index 的索引
if es.indices.exists(indexindex_name): # 如果索引存在删除es.indices.delete(indexindex_name)
es.indices.create(indexindex_name) # 新建索引# 生成随机数据
add_value_list: list []
for _ in range(1000):num random.randint(1, 100)add_value_list.append({_index: index_name, # 注意个参数决定要插入到哪个索引中value_num: random.randint(1, 100),value_choice: [c1, c2, c3][random.randint(0, 2)],})
# 批量插入数据
helpers.bulk(es, add_value_list)# 开始增删改查
_body_query {query: {range: {value_num: {gte: 40, # 40lte: 60 # 60}}},size: 20,
}response es.search(indexindex_name, body_body_query) # 查询10条
# 打印查询的结果
for _hit in response[hits][hits]:_value _hit[_source]print(value_num:, _value[value_num], value_choice:, _value[value_choice])# 更新操作
for _hit in response[hits][hits]:update_body {doc: {value_choice: c4, # 更新value_choice字段为c4}}res es.update(indexindex_name, id_hit[_id], bodyupdate_body)# 删除操作
for _hit in response[hits][hits]:res es.delete(indexindex_name, id_hit[_id])