sho*_* ek 7 elasticsearch elasticsearch-6
我正在寻找与 ES 版本兼容的语法/示例是 6.7。我看过文档,我没有看到任何例子,而且解释对我来说还不够清楚。我试过根据那个编写查询,但我一直收到语法错误。我已经看到以下关于 SO 的问题,但它们对我没有帮助:
布尔查询中的 should 过滤上下文(Elasticsearch)
它没有任何例子。
我收到语法错误
"type": "parsing_exception",
"reason": "no [query] registered for [filtered]",
"line": 1,
"col": 31
Run Code Online (Sandbox Code Playgroud)
也许它适用于不同版本的 ES。
我所需要的只是一个带有两个“或”条件的简单示例(我的是一个range和一个,term但我想这应该没什么关系),我都希望在过滤器上下文中使用(我不关心分数,也不关心分数)文本搜索)。
如果您真的需要它,我可以展示我的尝试(需要在发布之前从中删除一些“敏感”(duh)部分),但是它们会出现解析/语法错误,因此我认为它们没有任何意义。我知道没有表现出任何努力的问题被认为对 SO 不利,但我没有看到任何逻辑来显示甚至没有成功解析的尝试,任何示例都可以帮助我理解语法。
Pie*_*gel 31
您需要将should查询包装在查询中filter。
{
"query":{
"bool":{
"filter":[{
"bool":{
"should":[
{ // Query 1 },
{ // Query 2 }
]
}
}]
}
}
}
Run Code Online (Sandbox Code Playgroud)
0xc*_*0de 10
我有一个类似的场景(甚至是rangeandmatch过滤器),还有一个嵌套级别,两个条件要“或”(如您的情况),另一个条件要在逻辑上与结果“与”。正如@Pierre-Nicolas Mougel 在另一个答案中所建议的那样,我在bool子句周围嵌套了更多级别的should子句。
{
"_source": [
"my_field"
],
"query": {
"bool": {
"filter": {
"bool": {
"must": [
{
"bool": {
"should": [
{
"range": {
"start": {
"gt": "1558878457851",
"lt": "1557998559147"
}
}
},
{
"range": {
"stop": {
"gt": "1558898457851",
"lt": "1558899559147"
}
}
}
]
}
},
{
"match": {
"my_id": "<My_Id>"
}
}
],
"must_not": []
}
}
}
},
"from": 0,
"size": -1,
"sort": [],
"aggs": {}
}
Run Code Online (Sandbox Code Playgroud)
我在文档中读到minimum_should_match也可以用于强制过滤器上下文。如果此查询不起作用,这可能会对您有所帮助。
| 归档时间: |
|
| 查看次数: |
3119 次 |
| 最近记录: |