【问题标题】:elasticsearch Full Text Search all fields with start and end timeelasticsearch 全文搜索所有字段的开始和结束时间
【发布时间】:2016-11-29 05:05:03
【问题描述】:

我有以下查询运行,但没有返回正确的结果。返回的结果全部不包含查询中请求的单词(不包含请求的单词)。它可能与查询的“字段”部分有关,但是如果没有匹配项,它不应该什么都不返回吗?

{
"fields": ["id", "author", "authorId"],
"query": {
    "bool": {
        "must": [{
            "match": {
                "content": "dog"
            }
        }],
        "filter": [{
            "term": {
                "sourceOriginator": "Twitter"
            }
        }, {
            "range": {
                "estimatedDate": {
                    "gte": "2016-07-24T18:14:36.000Z",
                    "lte": "2016-07-25T18:14:38.000Z"
                }
            }
        }]
    }
}
}

【问题讨论】:

  • 您在“内容”字段中使用什么分析器?
  • 我不知道什么是“分析器”。
  • 为了更好地理解和使用 Elasticsearch,我建议阅读参考文档或 Elasticsearch 开发人员编写的免费在线书籍:elastic.co/guide/en/elasticsearch/guide/2.x/index.html。了解analyzer 是什么,这对于理解 Elasticsearch 至关重要。

标签: javascript json elasticsearch


【解决方案1】:

正确的做法是使用multi_match

{
"fields": ["id", "author", "authorId"],
"query": {
    "bool": {
        "must": [{
            "multi_match": {
                "query": "dog",
                "fields": ["id", "author", "authorId","content"]
            }
        }],
        "filter": [{
            "term": {
                "sourceOriginator": "Twitter"
            }
        }, {
            "range": {
                "estimatedDate": {
                    "gte": "2016-07-24T18:14:36.000Z",
                    "lte": "2016-07-25T18:14:38.000Z"
                }
            }
        }]
    }
}
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    相关资源
    最近更新 更多