elasticsearch,multi_match和按日期过滤

时间:2018-01-24 08:10:17

标签: elasticsearch filter range

我似乎遵循了我找到的每个类似答案,但我无法弄清楚出了什么问题......

这是"匹配所有"查询:

{
    "query": {
        "match_all": {}
    }
}

..和结果:

{
    "took": 1,
    "timed_out": false,
    "_shards": {
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": 1,
        "max_score": 1,
        "hits": [
            {
                "_index": "unittest_index_unittestdocument",
                "_type": "unittestdocument",
                "_id": "a.b",
                "_score": 1,
                "_source": {
                    "id": "a.b",
                    "docdate": "2018-01-24T09:45:44.4168345+02:00",
                    "primarykeywords": [
                        "keyword"
                    ],
                    "primarytitles": [
                        "the title of a document"
                    ]
                }
            }
        ]
    }
}

但是当我尝试使用这样的日期过滤它时:

{  
    "query":{
        "bool":{
            "must":{  
                "multi_match":{  
                    "type":"most_fields",               
                    "query":"document",
                    "fields":[ "primarytitles","primarykeywords" ]
                }
            },
            "filter": [
                {"range":{ "docdate": { "gte":"1900-01-23T15:17:12.7313261+02:00" } } }
            ]
        }
    }
}

我没有点击......

我试图关注此https://www.elastic.co/guide/en/elasticsearch/reference/current/query-filter-context.htmlfiltering by date in elasticsearch,但没有成功。

有什么不同,我看不到????

请注意,当我删除日期过滤器并在" primarykeywords"上添加一个术语过滤器时我得到了我想要的结果。唯一的问题是范围过滤器

1 个答案:

答案 0 :(得分:0)

显然我的查询没有错误,问题是docdate字段没有索引 ...:/

不知道为什么我最初跳过索引该字段(我的错误),但我确实认为弹性应该警告我我正在尝试查询具有" index:false&#34的内容;

在我认为,弹性不会在没有告知正在发生的事情的情况下返回结果的事情是一个重大问题。我失去了一天阅读我在网上找到的所有内容,只是因为我没有得到引擎的适当反馈。

故障安全因此而死...