【问题标题】:Elastic search query syntax弹性搜索查询语法
【发布时间】:2017-11-13 17:06:59
【问题描述】:

我正在尝试根据以下查询检索文档:

POST _search
{
    "size": 1, 
    "filter": {
        "bool": {
            "must": [
               {
                   "range":{
                        "myfield": {
                            "from": "yyyy-mm-ddT00:00:00Z",
                            "to": "yyyy-mm-ddT00:00:00Z"
                        }
                    }
               },
                {"term": {"myfield1.myfield2" : "myvalue"}}
            ]
        }
    }
}

不返回任何结果。我的语法可能有问题。如果有人能提供帮助,我将不胜感激。

这是文档的结构:

"_source": {
    "myfield": "yyyy-mm-ddT00:00:00",
    "myfield1": {
        "myfield2": "myvalue"
    }
}

【问题讨论】:

    标签: elasticsearch elastic-stack elasticsearch-5


    【解决方案1】:

    term 查询的字段不正确。

    而不是这个:

    {"term": {"myfield.myfield1.myfield2" : "myvalue"}}
    

    试试这个:

    {"term": {"myfield1.myfield2" : "myvalue"}}
    

    【讨论】:

    • 同样的问题。返回 null 作为输出
    • 您能否展示您的索引的映射以及应该与您的查询匹配的示例文档?
    • "hits": { "total": 187, "max_score": 1, "hits": [ { "_index": "something", "_type": "something", "_id" : "something", "_score": 1, "_source": { "eventVersion": "1.05", "myfield1":{ "myfield2": "soemthing" }}}}]}
    • 那里没有日期字段,因此range 查询不匹配任何内容
    • 范围查询工作正常,只要 myfield1.myfield2 查询不存在
    猜你喜欢
    • 2014-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-02
    • 2021-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多