Почему родитель и ребенок не могут совпасть в Elastichsearch - PullRequest
0 голосов
/ 15 октября 2019

Я пытался запрашивать бренды, у которых есть какие-либо продукты. Но отношения родитель-потомок не совпадают для части записей. базовая информация:

{
  "name": "OueFTFf",
  "cluster_name": "elasticsearch",
  "cluster_uuid": "LqK-ElvrS36gKRqP9bfAbg",
  "version": {
    "number": "5.3.3",
    "build_hash": "65e26e6",
    "build_date": "2017-05-22T12:03:12.318Z",
    "build_snapshot": false,
    "lucene_version": "6.4.2"
  },
  "tagline": "You Know, for Search"
}

Запись о бренде ниже в моем эластичном поиске:

    {
        "_index": "dev_40fa7a5d4ceb59260c730b22a6728ea8",
        "_type": "brand",
        "_id": "5CC4077395353046E79A275B432FE5C7",
        "_score": 1,
        "_routing": "5CC4077395353046E79A275B432FE5C7",
        "_source": {
            "encrypted_id": "5CC4077395353046E79A275B432FE5C7",
            "name": "Ball",
            ...
        }
    }

Запись о продукте ниже в моем эластичном поиске:

    {
        "_index": "dev_40fa7a5d4ceb59260c730b22a6728ea8",
        "_type": "product",
        "_id": "842E8BE3AED89F0C3B944B789B2CF1BC_en-us",
        "_score": 1.2809339,
        "_routing": "842E8BE3AED89F0C3B944B789B2CF1BC",
        "_parent": "5CC4077395353046E79A275B432FE5C7",
        "_source": {
            "encrypted_id": "842E8BE3AED89F0C3B944B789B2CF1BC",
            "name": "a prod"
            ...
        }
    }

, а затем, Я пытаюсь использовать '_explain': (результат будет пустым, если я использую запрос без объяснения)

GET dev_40fa7a5d4ceb59260c730b22a6728ea8/brand/5CC4077395353046E79A275B432FE5C7/_explain
{
  "query": {
    "has_child": {
      "type": "product",
      "query": {
        "match": {
          "encrypted_id": "842E8BE3AED89F0C3B944B789B2CF1BC"
        }
      }
    }
  }
}

Это результат объяснения:

{
  "_index": "dev_40fa7a5d4ceb59260c730b22a6728ea8",
  "_type": "brand",
  "_id": "5CC4077395353046E79A275B432FE5C7",
  "matched": false,
  "explanation": {
    "value": 0,
    "description": "Failure to meet condition(s) of required/prohibited clause(s)",
    "details": [
      {
        "value": 0,
        "description": "no match on required clause (GlobalOrdinalsQuery{joinField=_parent#brand})",
        "details": [
          {
            "value": 0,
            "description": "Not a match, join value 5CC4077395353046E79A275B432FE5C7",
            "details": []
          }
        ]
      },
      {
        "value": 0,
        "description": "match on required clause, product of:",
        "details": [
          {
            "value": 0,
            "description": "# clause",
            "details": []
          },
          {
            "value": 1,
            "description": "_type:brand, product of:",
            "details": [
              {
                "value": 1,
                "description": "boost",
                "details": []
              },
              {
                "value": 1,
                "description": "queryNorm",
                "details": []
              }
            ]
          }
        ]
      }
    ]
  }
}

Я думаюотношения родитель-ребенок не работают. Но я не знаю почему. Кто-нибудь может помочь мне указать причину?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...