【问题标题】:How can I write a query?如何编写查询?
【发布时间】:2019-10-06 17:46:30
【问题描述】:
"search_id" : "7f2d683165",
          "uploaded_time" : "2019-05-10 15:25:35.373",
          "processing_end_time" : "2019-05-10 15:25:38.115",
          "batches" : {
            "5cd598617026837753891a2b" : {
              "is_reviewed" : false,
              "batch_name" : "T--45"
            }
          }

如果我想要("is_reviewed" : true),我该如何编写正确的查询?
我试过这个:

query={"query": { "nested" : {"path" : "batches","query" : {"bool" : {"should" : [ { "match" : {"batches.is_reviewed" : true} }]}}}}}

res=es.search(index="cool",body={"query":{"match":{"pass":"true"}}})

我只想输出"pass:true"

【问题讨论】:

  • 您确定batchesnested 类型吗?

标签: python elasticsearch elasticsearch-5


【解决方案1】:

你可以试试这个:

{
  "query": {
    "query_string": {
      "query": "batches.\\*.is_reviewed:true"
    }
  }
}

如果batchesnested,则为:

{
  "query": {
    "nested": {
      "path": "batches",
      "query": {
        "bool": {
          "should": [
            {
              "query_string": {
                "query": "batches.\\*.is_reviewed:true"
              }
            }
          ]
        }
      }
    }
  }
}

【讨论】:

  • 我已经修改了查询,试试看是否有效。不过,您应该重新考虑您的数据设计,因为您最终可能会在索引中创建太多字段。
  • 抱歉,* 需要转义,重试。
  • 它对我有用。请确保准确输入我显示的内容
  • 您使用了正斜杠而不是反斜杠。只需复制/粘贴我的查询
  • 如果您通过 Python 运行它,请尝试使用一个反斜杠,而不是两个
猜你喜欢
  • 2020-10-04
  • 2017-12-23
  • 2016-01-17
  • 2011-03-22
  • 2012-12-13
  • 1970-01-01
  • 2023-03-27
  • 2018-10-13
  • 2016-11-07
相关资源
最近更新 更多