elasticsearch - 提供空字符串时,Elasticsearch多重匹配不会返回所有结果

标签 elasticsearch elastic-stack elasticsearch-dsl

我总共有1783条记录,如果没有提供 multi_match 查询,我希望ES返回所有记录(searchObject.query = '')

如果我将空数组传递给query.bool,则可以做到这一点。 应该为,因此理论上我可以根据searchObject.query值更新下面的ES对象,但是我不确定这是否是一个好主意。

{
    _source: [
        'id',
        'event',
        'description',
        'element',
        'date'
    ],
    track_total_hits: true,
    query: {
        bool: {
            should: [{
                multi_match:{
                    query: searchObject.query
                    fields: ["element","description","nar.*","title","identifier"]
                }
            }],
            filter: []
        }
    },
    highlight: { fields: { '*': {} } },
    sort: [],
    from: 0,
    size: 10
}

有什么建议么?

最佳答案

您可以将 match_all 附加到should:

{
  "_source": [
    "id",
    "event",
    "description",
    "element",
    "date"
  ],
  "track_total_hits": true,
  "query": {
    "bool": {
      "should": [
        {
          "multi_match": {
            "query": "",
            "fields": [
              "line",
              "element",
              "description",
              "nar.*",
              "title",
              "identifier"
            ]
          }
        },
        {
          "match_all": {}
        }
      ],
      "filter": []
    }
  },
  "highlight": {
    "fields": {
      "*": {}
    }
  },
  "sort": [],
  "from": 0,
  "size": 10
}

那就是通常的目的。恕我直言,在执行ES请求之前,应检查空字符串。我假设它来自自动完成等。

关于elasticsearch - 提供空字符串时,Elasticsearch多重匹配不会返回所有结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61502579/

相关文章:

elasticsearch - 插件[ingest-geoip]是为Elasticsearch版本6.2.4构建的,但是版本6.5.0正在运行

elasticsearch - 查询 Elasticsearch 时没有匹配项

elasticsearch - Elasticsearch 错误-[前缀]查询不支持[前缀]

elasticsearch - Elasticsearch得分从0到1,用于搜索与现有文档相似的文档

elasticsearch - ElasticSearch 2.x存在用于嵌套字段的过滤器不起作用

elasticsearch - 如何在 Elasticsearch 中将术语与空格匹配?

elasticsearch - 在Kibana中,指标类型无法正确显示指标

ubuntu - 如何连接到安装在 Ubuntu 16 上的远程 ElasticSearch 服务器?

elasticsearch - 如何将数据复制到另一个集群

elasticsearch - 如何在Elasticsearch中对多值字段进行桶聚合