【问题标题】:How can I use elasticsearch to search with special commands in query?如何使用 elasticsearch 在查询中使用特殊命令进行搜索?
【发布时间】:2016-05-31 06:34:24
【问题描述】:

我有一个包含许多文档的弹性索引。 一个文件代表一些事件。 每个活动都有日期和地理位置。

我想发送如下查询: “洛杉矶的一些事件”, “明天有活动”, “我附近的一些活动”...

如何使用弹性构建此解决方案?

【问题讨论】:

    标签: elasticsearch human-computer-interface humanize human-language


    【解决方案1】:

    Elasticsearch 有一些工具可以做到这一点。 例如,我们在特定位置(纬度、经度)有一个图钉,如下所示:

    {
        "pin" : {
            "location" : {
                "lat" : 40.12,
                "lon" : -71.34
            }
        }
    }
    

    要在 200 公里范围内进行搜索,我们可以执行如下查询:

    {
        "bool" : {
            "must" : {
                "match_all" : {}
            },
            "filter" : {
                "geo_distance" : {
                    "distance" : "200km",
                    "pin.location" : {
                        "lat" : 40,
                        "lon" : -70
                    }
                }
            }
        }
    }
    

    真的很简单 对于日期,您可以使用这样的范围查询:

    {
        "range" : {
            "date" : {
                "gte" : "now/d",
                "lt" :  "now+1d/d"
            }
        }
    }
    

    有关更多示例,请查看文档 https://www.elastic.co/guide/en/elasticsearch/guide/current/geoloc.html https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-range-query.html

    【讨论】:

    • 谢谢。我知道这个。我想将搜索查询中的命令词(明天,在我附近,在洛杉矶)转换为复杂的 DSL 查询,
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-20
    相关资源
    最近更新 更多