为什么我的弹性搜索有一些问题,无法搜索一些东西?

问题描述 投票:0回答:1

我的弹性搜索查询是

{
  "bool": {
    "should": [
      {
        "bool": {
          "must": [
            {
              "wildcard": {
                "currency.keyword": "*oke*"
              }
            },
            {
              "wildcard": {
                "search_tags.keyword": "*BTC*USDT"
              }
            },
            {
              "term": {
                "record_type.keyword": "market"
              }
            }
          ]
        }
      },
      {
        "bool": {
          "must": [
            {
              "wildcard": {
                "currency.keyword": "*BTC*"
              }
            },
            {
              "wildcard": {
                "search_tags.keyword": "*oke*USDT"
              }
            },
            {
              "term": {
                "record_type.keyword": "market"
              }
            }
          ]
        }
      },
      {
        "bool": {
          "must": [
            {
              "wildcard": {
                "currency.keyword": "*USDT*"
              }
            },
            {
              "wildcard": {
                "search_tags.keyword": "*oke*BTC"
              }
            },
            {
              "term": {
                "record_type.keyword": "market"
              }
            }
          ]
        }
      }
    ]
  },
  "from": 0,
  "size": 20
}

它从我的索引返回null。

但当我的查询是:

{
  "query": {
    "bool": {
      "must": [
        {
          "wildcard": {
            "search_tags.keyword": "okexBTC*"
          }
        },
        {
          "wildcard": {
            "currency.keyword": "USD"
          }
        },
        {
          "term": {
            "record_type.keyword": "market"
          }
        }
      ],
      "must_not": [],
      "should": []
    }
  },
  "from": 0,
  "size": 10,
  "sort": [],
  "aggs": {}
}

它回归了什么。

php elasticsearch
1个回答
0
投票

如果您的示例中的查询是正确的,那么第一个查询没有匹配时第二个查询可能会命中是合法的。这是因为第二个查询中的条件与第一个查询的任何should案例都不匹配。只需查看第二个查询的"currency.keyword": "USD"条件:在第一个查询中无法匹配此条件。

© www.soinside.com 2019 - 2024. All rights reserved.