为什么我的Elasticsearch有问题,无法搜索某些东西?

时间:2019-03-06 02:37:54

标签: php elasticsearch

我的elasticsearch查询是

{
  "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": {}
}

它返回一些东西。

1 个答案:

答案 0 :(得分:0)

如果您的示例中的查询正确,则第二个查询可能具有匹配,而第一个查询则没有匹配是合法的。这是因为第二个查询中的条件与第一个查询的should个情况都不匹配。只需查看第二个查询的"currency.keyword": "USD"条件:该条件在第一个查询中是无法匹配的。