node.js - Elasticsearch关键字+范围查询(V-6.2)
问题描述
我正在尝试在 Elasticsearch 中编写一个查询,以使其与 Range 过滤器和用户的查询关键字输入一起使用。我最终写的查询是:
"size": val, //default 10,
"from": 0, //default 0,
"query": {
"bool": {
"must": {
"query_string": {
"query": search_query //Val coming from user input
},
"filter": {
"range": {
"lastmodifieddate": {
"gte": '2016-12-09T00:00:00',
"lte": '2016-12-20T00:00:00'
}
}
}
}
}
}
上面的查询不起作用。
我也在从我的弹性搜索中寻找匹配的 1 个键值对。
_source:
lastmodifieddate: "2016-12-07T18:34:48.000+0000",
..
..
fileType: "PDF"
...
有人可以说明如何使其工作,并且所有记录的查询参数必须匹配 fileType = PDF
TIA
解决方案
您必须将“过滤器”放在“必须”之外。两者处于不同的语境中。请参阅此文档https://www.elastic.co/guide/en/elasticsearch/reference/current/query-filter-context.html
{
"query": {
"bool": {
"must": {
"query_string": {
"query": "user input"
}
},
"filter": {
"range": {
"lastmodifieddate": {
"gte": "2014-01-09T00:00:00",
"lte": "2014-12-20T00:00:00"
}
}
}
}
}
}
推荐阅读
- android - 我该如何解决这个统一的android构建错误
- html - 带有CSS的复选框波纹效果
- typescript - 我可以在实现具有打字稿中泛型类型的接口的类中定义特定的类类型吗?
- weblogic - 如何将 WebLogic Server 从 12.2.1.3.0 升级到 12.2.1.4.0
- mysql - 轨道交通。无法访问已处置的对象。对象名称:'MySqlConnection'
- robotframework - 为什么拖放在这种情况下不起作用?
- python - 使用 Flask 将数据从表单发送到另一个页面
- graphics - 如何理解计算机视觉和计算机图形学中不同的相机约定
- arrays - 字符串数组的正则表达式
- java - 睡眠(来自客户端的时间)多线程