代码之家  ›  专栏  ›  技术社区  ›  Omarkad

在查询elasticsearch中访问字段文档

  •  1
  • Omarkad  · 技术社区  · 6 年前

    例如,假设我们有以下映射:

    {
        "location":{
            "dynamic":"false",
            "properties":{
                "locality":{"type":"text"},
                "country":{"type":"text"},
                "postalCode":{"type":"text"},
                "coordinates":{"type":"geo_point"},
                "radius":{"type":"double"}
            }
        }
    }
    

    这是我的问题:

    GET index_name/location/_search
    {
        "query": {
            "bool": {
                "filter": {
                    "geo_distance": {
                        "coordinates": [
                            2.352222, 
                            48.999
                        ],
                        "distance": $radius <--- *(here I want to access the
                                                   value of radius in document)*
                     }
                }
            }
        }
    }
    

    在Elasticsearch查询中是否有访问字段文档值的方法?

    使用它可行吗 脚本查询 ? doc文件 here

    1 回复  |  直到 6 年前
        1
  •  1
  •   Omarkad    6 年前

    是的事实上 脚本查询 诀窍在于:

    GET index_name/location/_search
    {
        "query": {
            "bool": {
                "must": [
                    {
                        "script": {
                            "script": {
                                "inline": "doc['coordinates'].planeDistance(48.856614 , 2.37959999) <= doc['radius'].value",
                                "lang": "painless"
                            }
                        }
                     }
                ]
            }
        }
    }
    

    谢谢