【问题标题】:Nested query on ElasticSearch for Long type (ES 5.0.4)长类型的 ElasticSearch 的嵌套查询(ES 5.0.4)
【发布时间】:2020-04-04 17:25:21
【问题描述】:

这是我关于 Stack Overflow 的第一个问题,请原谅我的错误。以后我会改进他们。 我也是弹性搜索的新手。好的,所以我正在尝试在弹性搜索(5.0.4)中进行完全匹配。该请求不是进行完全匹配,而是返回所有存在的文档。 不确定这种行为。

这是映射

{
   "properties":{
      "debug_urls":{
         "properties":{
            "characteristics":{
               "type":"text",
               "fields":{
                  "keyword":{
                     "type":"keyword",
                     "ignore_above":256
                  }
               }
            },
            "url_id":{
               "type":"long"
            }
         },
         "type":"nested"
      },
      "scanId":{
         "type":"text",
         "fields":{
            "keyword":{
               "type":"keyword",
               "ignore_above":256
            }
         }
      }
   }
}

这是我的要求。

{
    "query": {
        "nested": {
           "path": "debug_urls",
           "query": {
               "match": {
                  "debug_urls.url_id": 1
               }
           }
        }
    }
}

收到的响应,

{
   "took":1,
   "timed_out":false,
   "_shards":{
      "total":5,
      "successful":5,
      "failed":0
   },
   "hits":{
      "total":1,
      "max_score":1,
      "hits":[
         {
            "_index":"cust_cca39c0c6c8141008e9411032bbf4d21",
            "_type":"debug-urls",
            "_id":"AW70h0l72s9qXitMsWgC",
            "_score":1,
            "_source":{
               "scan_id":"n_a0a523fb5c81435fb79c34c624c7fbd6",
               "debug_urls":[
                  {
                     "url_id":1,
                     "characteristics":[
                        "FORM",
                        "EXTERNAL_SCRIPT",
                        "INLINE_SCRIPT"
                     ]
                  },
                  {
                     "url_id":2,
                     "characteristics":[
                        "EXTERNAL_SCRIPT",
                        "INLINE_SCRIPT"
                     ]
                  },
                  {
                     "url_id":3,
                     "characteristics":[
                        "EXTERNAL_SCRIPT",
                        "INLINE_SCRIPT"
                     ]
                  },
                  {
                     "url_id":4,
                     "characteristics":[
                        "EXTERNAL_SCRIPT",
                        "INLINE_SCRIPT"
                     ]
                  },
                  {
                     "url_id":5,
                     "characteristics":[
                        "EXTERNAL_SCRIPT",
                        "INLINE_SCRIPT"
                     ]
                  },
                  {
                     "url_id":6,
                     "characteristics":[
                        "EXTERNAL_SCRIPT",
                        "INLINE_SCRIPT"
                     ]
                  },
                  {
                     "url_id":7,
                     "characteristics":[
                        "EXTERNAL_SCRIPT",
                        "INLINE_SCRIPT"
                     ]
                  }
               ]
            }
         }
      ]
   }
}

【问题讨论】:

  • 您只想查看匹配的嵌套文档吗?
  • 是的。在我的照顾下,我希望在字段 url_id 上完全匹配

标签: elasticsearch elasticsearch-5 elasticsearch-query


【解决方案1】:

如果您只想查看符合条件的嵌套文档,可以利用nested inner_hits

{
    "_source":["scan_id"],                     <--- add this line
    "query": {
        "nested": {
           "path": "debug_urls",
           "query": {
               "match": {
                  "debug_urls.url_id": 1
               }
           },
           "inner_hits": {}                    <--- add this line
        }
    }
}

【讨论】:

  • 试过这个不起作用..我将添加我看到的输出以供在问题中参考。
  • 你添加了输出吗?
  • 是的,已经在问题中添加了 - 收到的回复,..感谢您的回复!
  • 查看我更新的答案,请重试。您正在寻找的点击在inner_hits 部分中的_source 下方
  • 成功了!万分感谢!如果您不费吹灰之力,您能否详细说明您添加的行,或将我指向一些链接/文档以及有关它们的更多信息..
猜你喜欢
  • 2015-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-08
  • 2018-10-17
  • 1970-01-01
相关资源
最近更新 更多