Elasticsearch迁移过滤器

时间:2017-11-03 15:24:43

标签: json elasticsearch filter filtering elasticsearch-5

这是我的问题:我需要将我的过滤器/查询语法(elasticsearch 1.x)翻译为elasticsearch 5.x语法。

这是我的疑问:

{
"query ": {
    "filtered ": {
        "query ": {
            "fuzzy_like_this ": {
                "like_text ": "    cin ",
                "max_query_terms ": 12,
                "fuzziness ": 0.7
            }
        },
        "filter ": {
            "and ": {
                "filters ": [{
                    "or ": {
                        "filters ": [{
                            "type ": {
                                "value ": "etude_patrimoine_architecture "
                            }
                        }]
                    }
                }]
            }
        }
    }
}
}

我不太了解bool的弹性5.x语法。

任何有关迁移此过滤器的帮助都将不胜感激。

2 个答案:

答案 0 :(得分:0)

基本上,

  • filtered/query部分进入bool/must
  • filtered/filter部分位于bool/filterbool/must_notbool/should,具体取决于您是否需要AND,NOT或OR行为。

这样的事情应该让你开始:

{
  "query": {
    "bool": {
      "must": [
         query
      ],
      "should": [
         queryLayers
      ]
    }
  }
}

答案 1 :(得分:0)

这是最终的解决方案:

{
    "query": {
        "bool": {
            "must": [{
                "match": {
                    "_all": {
                        "query": QUERYVALUE,
                        "fuzziness": "AUTO"
                    }
                }
            }, {
                "bool": {
                    "should": [{
                        "type": {
                            "value": VAL1
                        }
                    }, {
                        "type": {
                            "value": VAL2
                        }
                    }]
                }
            }],
            "filter": {
                "geo_shape": {
                    "geometry": {
                        "shape": {
                            "type": "envelope",
                            "coordinates": COORDARAY
                        }
                    }
                }
            }
        }
    }
}