elasticsearch - 如何将 2 个匹配查询加入到 elasticsearch 查询中?

标签 elasticsearch

我想查询 user_id'1'name'John'。编写一个常用的 SQL 很容易:

select * from t where user_id = '1' and name = 'John';

但是我对elasticsearch进行查询并不容易。

首先,我查询了 user_id:

{
  "query" : {
    "match" : {
      "user_id" : "1"
    }
  }
}

结果如我所料。

然后,我查询了name:

{
  "query" : {
    "match" : {
      "name" : "John"
    }
  }
}

效果也很好。

但是我无法使用 and 操作查询加入 2 个条件。如何将这 2 个匹配查询合并为一个使用和操作?

最佳答案

您需要的是 bool query在其中放置所有单个查询:

(我无法测试查询,它可能是错误的,但 bool 查询是您问题的答案)

{
    "bool" : {
        "must" : [{
            "match" : {
                "user_id" : "1"
            },
            "match" : {
                "name" : "John"
            }
        }]
    }
}

关于elasticsearch - 如何将 2 个匹配查询加入到 elasticsearch 查询中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13363709/

相关文章:

node.js - 从数组 Elasticsearch 中删除对象

performance - 了解Elasticsearch慢查询日志格式

laravel - 字段 [_id] 是元数据字段,不能添加到文档中。使用索引 API 请求参数

node.js - 具有 Express 框架的 ElasticSearch

java - 从集群收集指标

javascript - 如何发出get请求来检索elasticsearch集群中某个索引的最新文档?

elasticsearch - 生成 filebeat 自定义字段

elasticsearch - elasticsearch节点有多少个分片

php - Elasticsearch 数据导入时间表

java - 使用 ElasticsearchTemplate 和聚合器获取聚合值