【问题标题】:search query in elasticsearchelasticsearch中的搜索查询
【发布时间】:2017-04-02 18:47:57
【问题描述】:

我的 elasticsearch 中有如下文件

{"method":"POST","url":"/saas/services/1.0/account/*/purchase/*/subscription/cancel"}
{"method":"POST","url":"/saas/services/1.0/account/*/purchase/*/cancel"}

我正在使用 node.js 客户端搜索这些文档。以下是我发送的查询。

示例 1 类型:DSL

client.search({
    index: 'my_node',
    body: {
        query: {
            bool: {
                must: {
                    match: { method: 'POST' },
                    match: { url: '/saas/services/1.0/account/*/purchase/*/cancel' }
                }
            }
        }
    }
}

输出 我正在通过订阅取消获得另一条记录。查询与确切的文档不匹配。我尝试了以下查询,它适用于这种情况,但不适用于其他几个测试用例。

文档

  {"method":"POST","url":"/paas/service/1.0/act/*/purchase"}}
    {"method":"GET","url":"/paas/service/1.0/act/*/purchase"}}
    {"method":"PUT","url":"/paas/service/1.0/act/*/purchase"}}

示例 2 类型:查询字符串

    client.search({
  index: 'my_node',
  q: 'method: POST AND url: /saas/services/1.0/account/*/purchase'
}

输出

不管其他两个,我都得到了 GET 购买文件。尝试了其他几个文档,方法参数未得到识别。

如何编写 elasticsearch 查询来搜索文档以匹配方法和 url 的属性。我曾尝试为 url 增加查询时间,但似乎不起作用。

编辑 - 映射信息

 {
  "nodeclient": {
    "mappings": {
      "logs": {
        "properties": {
          "method": {
            "type": "string" },
          "url": {
            "type": "string" }
     } } }
  }
}

【问题讨论】:

  • 您的文档的映射是什么?你能用你从curl -XGET localhost:9200/my_node/_mapping得到的输出更新你的问题吗?
  • @val 我已经用映射信息更新了帖子。谢谢!!

标签: node.js elasticsearch full-text-search querydsl


【解决方案1】:

试试加引号

client.search({ index: 'my_node', body: { "query": { "bool": { "must": { “匹配”:{“方法”:'POST'},“匹配”:{“url”: '/saas/services/1.0/account//purchase//cancel' } } } } } }

【讨论】:

    【解决方案2】:

    我尝试使用 Mirage plugin 为弹性搜索查询优化查询。我正在尝试不同的示例并看到了响应。以下是适用于我的场景的最终查询

              {
                "query": {
                    "bool": {
                        "must": [
                            { "match_phrase": { "url": uri }},
                            { "match": { "method": http } }
                        ]}
                }
    

    match_phrase 更适合 url 参数。我也错过了 must 子句中的数组部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-14
      • 2021-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 2021-08-27
      • 2015-03-08
      相关资源
      最近更新 更多