Как присоединить документ к поисковому запросу - PullRequest
0 голосов
/ 30 марта 2020
{
  "took": 0,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": 3,
    "max_score": 0.2876821,
    "hits": [
      {
        "_index": "product_index",
        "_type": "product",
        "_id": "1115",
        "_score": 0.2876821,
        "_source": {
          "isactive": true,
          "in_use": false,
          "brand_name": "Adidas",
          "sku_id": "56456487987987",
          "long_description": "this is long description",
          "key_feature": [
            {
              "id": 1148,
              "key_feature": "sport wear"
            },
            {
              "id": 1147,
              "key_feature": "Cotton shirt"
            },
            {
              "id": 1146,
              "key_feature": "White and blue"
            }
          ],
          "isdeleted": false,
          "created_by": null,
          "brand_id": 5,
          "search_terms": [
            {
              "label": "white shirt",
              "value": 9
            }
          ]
          "color_id": 2,
          "specific_keywords": "",
          "item_list": [
            {
              "item_id": 1114,
              "product_id": 1115,
              "isactive": true,
              "id": 9,
              "isdeleted": false
            },
            {
              "item_id": 1113,
              "product_id": 1115,
              "isactive": true,
              "id": 10,
              "isdeleted": false
            }
          ],
          "upc_code": "",
          "display_size": "L",
          "name": "New White shirt",
          "updated_by": null,
          "id": 1115,
          "updated_date": "2020-03-25T08:24:37.644571+00:00",
          "color_name": "blue",
          "created_date": "2020-03-25T08:11:14.966673+00:00",
          "category": [
            {
              "parent_category_id": 78,
              "sub_sub_category": null,
              "sub_category": null,
              "sub_category_id": null,
              "sub_sub_category_id": null,
              "parent_category": "new Shirt Cate",
              "id": 1151
            }
          ]
        }
      },
      {
        "_index": "product_index",
        "_type": "product",
        "_id": "1113",
        "_score": 0.2876821,
        "_source": {
          "isactive": true,
          "in_use": false,
          "sku_id": "1456456488",
          "brand_name": "Adidas",
          "long_description": "",
          "key_feature": [
            {
              "id": 1142,
              "key_feature": "Cotton"
            },
            {
              "id": 1141,
              "key_feature": "Office Use"
            },
            {
              "id": 1140,
              "key_feature": "Black formal"
            }
          ],
          "isdeleted": false,
          "created_by": null,
          "brand_id": 5,
          "search_terms": [

          ]
          "color_id": 1,
          "specific_keywords": "",
          "item_list": [

          ],
          "display_size": "L",
          "upc_code": "",
          "name": "New Cotton formal shirt black",
          "updated_by": null,
          "id": 1113,
          "updated_date": "2020-03-25T06:48:30.903041+00:00",
          "created_date": "2020-03-25T06:48:29.943043+00:00",
          "color_name": "black",
          "category": [
            {
              "sub_sub_category": null,
              "parent_category_id": 54,
              "sub_category": null,
              "sub_category_id": null,
              "sub_sub_category_id": null,
              "parent_category": "MEN'S CLOTHING",
              "id": 1149
            }
          ]
        }
      },
      {
        "_index": "product_index",
        "_type": "product",
        "_id": "1114",
        "_score": 0.2876821,
        "_source": {
          "isactive": true,
          "in_use": false,
          "sku_id": "145645648811",
          "brand_name": "Adidas",
          "long_description": "",
          "key_feature": [
            {
              "id": 1145,
              "key_feature": "Cotton"
            },
            {
              "id": 1144,
              "key_feature": "Office Use"
            },
            {
              "id": 1143,
              "key_feature": "Black formal"
            }
          ],
          "isdeleted": false,
          "created_by": null,
          "brand_id": 5,
          "search_terms": [

          ],
          "color_id": 1,
          "specific_keywords": "",
          "item_list": [

          ],
          "display_size": "L",
          "upc_code": "",
          "updated_by": null,
          "name": "New Cotton Casual shirt black",
          "id": 1114,
          "created_date": "2020-03-25T07:13:26.233675+00:00",
          "color_name": "black",
          "updated_date": "2020-03-25T07:13:27.229363+00:00",
          "category": [
            {
              "sub_sub_category": null,
              "parent_category_id": 54,
              "sub_category": null,
              "sub_category_id": null,
              "sub_sub_category_id": null,
              "parent_category": "MEN'S CLOTHING",
              "id": 1150
            }
          ]
        }
      }
    ]
  }
}

Мое требование - прикрепить все связанные документы с указанными c полями значения ключа, которые указываются в item_list на основе item_id. В приведенном выше результате do c id 1115 имеет item_list, который содержит item_id 1114 и 1113. поэтому конкретные поля прикрепляются в do c 1115. каким должен быть поисковый запрос для этого в elasti c search?

1 Ответ

2 голосов
/ 30 марта 2020

Вы не можете присоединиться к Elasticsearch, чтобы достичь своей цели, вы можете сделать две вещи:

  1. дублировать информацию item_id 1114 и 1113 в item_id 1115 (и наверняка во всех другие документы).
  2. Присоединяйтесь на уровне приложения, поэтому после этого запроса вы можете извлечь item_id 1114 и 1113 и выполнить два других запроса, чтобы получить информацию об этих элементах. Затем присоединитесь ко всем json на уровне приложения.
...