我对Elasticsearch和查询DSL非常陌生。我正在尝试使用node.js和from matplotlib.backends.backend_pdf import PdfPages
import matplotlib.pyplot as plt
import numpy as np
pp = PdfPages('multipage.pdf')
x=np.arange(1,10)
y=np.arange(1,10)
fig=plt.figure()
ax1=fig.add_subplot(211)
# ax1.set_title("cell" + keyInTags)
# ax1.plot(x, y, color='k')
# ax.plot(x, y_red, color='k')
ax2=fig.add_subplot(212)
pp.savefig(fig)
fig2=plt.figure()
ax1=fig2.add_subplot(321)
ax1.plot(x, y, color='k')
ax2=fig2.add_subplot(322)
ax2.plot(x, y, color='k')
ax3=fig2.add_subplot(313)
pp.savefig(fig2)
pp.close()
构建模糊搜索支持的过滤器端点。
我的数据结构如下;
async doesUserExists(createUserDTO: CreateUserDTO): any {
const user = await this.userModel.findOne({ userName: createUserDTO.userName });
if(user.length != 0){
return true;
}
return false;
}
我正在尝试获得类别4或5(产品1、2和4)的点击量
在单独或相同的查询中,我还尝试从这些匹配中创建一组// add a user
@Post('/create')
async addUser(@Res() res, @Body() createUserDTO: CreateUserDTO) {
if(await this.userService.doesUserExists()){
return res.status(HttpStatus.OK).json({
message: "User already exists"
})
}
const user = await this.usersService.addUser(createUserDTO);
return res.status(HttpStatus.OK).json({
message: "User has been created successfully",
user
})
}
。应该是;
@elastic/elasticsearch
直到现在我创建此查询;
{
name: "product 1",
price: 43,
categories: [5, 6],
description: "lorem...",
product_attribute_values: [{
attribute_id: 1,
attribute_value_id: 1
}]
},
{
name: "product 2",
price: 45,
categories: [4, 6],
description: "lorem...",
product_attribute_values: [{
attribute_id: 1,
attribute_value_id: 2
}]
},
{
name: "product 3",
price: 57,
categories: [1, 6, 7],
description: "lorem...",
product_attribute_values: [{
attribute_id: 2,
attribute_value_id: 3
}]
},
{
name: "product 4",
price: 79,
categories: [5],
description: "lorem...",
product_attribute_values: [{
attribute_id: 2,
attribute_value_id: 4
}]
},
但是我不确定这是否是正确的方法。
PS:另一个令我困惑的小事情是如何以编程方式更改product_attribute_values
值。我将对这些结果使用分页,并且我需要所有可能的属性,包括那些受 product_attribute_values: [{
attribute_id: 1,
attribute_value_id: 1
}, {
attribute_id: 1,
attribute_value_id: 2
}, {
attribute_id: 2,
attribute_value_id: 4
}]
限制过滤的属性。
答案 0 :(得分:1)
如果您尝试更新的值是静态的还是不是基于查询本身返回的文档,则可以使用update_by_query(而不是_search)直接更新您的第一个查询返回的文档(在这种情况下)在您的nodeJS代码中执行起来可能会更容易。)
对于index.max_result_window,您可以使用index setting api设置其值:
PUT /products/_settings
{
"index" : {
"max_result_window" : 50000
}
}
max_result_windows的链接文档包含指向其他处理结果分页的方法的链接;您可能也想探索一下。处理分页(和大小限制)的基本方法是在查询中使用“ from”参数。 from是结果中文档的位置,从该位置开始接收值直到大小。
例如: from:0 size:1000将返回查询结果的前1k个文档(第1页) from:1000 size:1000 is page 2(接下来的1k,从1k到2k开始) 从:2000大小:1000是第3页 等等,等等... sniff