HCL Commerce Version 9.1.13.0 or later

Recopilación de datos MustGather relacionados con la búsqueda basada en Elasticsearch para problemas con el tiempo de ejecución de las consultas

Prepare la siguiente información MustGather antes de comunicarse con el soporte de HCL para ayudarle con los problemas de Elasticsearch.

Before you begin

Este MustGather utilizará el rastreo a nivel de solicitud para aplicar únicamente el rastreo a la solicitud de REST de consulta que se utiliza para el escenario, en lugar de aplicar el rastreo a nivel de servicio, que aplicaría este a todas las solicitudes de REST de consulta que se procesen en la aplicación. Para habilitar el rastreo a nivel de solicitud, siga los pasos de Registrar y solucionar problemas de los servicios de recopilación y consulta.

About this task

Este MustGather se puede utilizar para investigar la causa de los problemas generales de tiempo de ejecución basados ​​en Elasticsearch. Si está intentando responder una de las siguientes preguntas, este es el MustGather que debe utilizar:

  1. ¿Por qué obtengo una cantidad de resultados de búsqueda diferente a la esperada?
  2. ¿Por qué los resultados de mi búsqueda están ordenados de forma diferente a la esperada?

Procedure

  1. Confirme la solicitud de REST de consulta que se aplica al escenario que está investigando. Si no está seguro de qué es esto y está utilizando un escaparate basado en React, puede usar la pestaña Red de las herramientas de desarrollador de su navegador al desplazarse por el escaparate para reproducir el problema y ver la llamada o llamadas de REST de consultas que se realizan.
  2. Ejecute la solicitud de REST de consulta con una cabecera adicional "X-Log-Level=TRACE". No añada esto a su solicitud de REST mediante un parámetro de URL.
  3. Recopile todos los archivos de rastreo generados en el servicio de consulta:
    /app/ESQueryService/logs/​ 

What to do next

Revisión de la solicitud inicial
El comienzo del escenario será el procesamiento de la solicitud de REST entrante al servicio de consulta. El manejador de recursos utilizado se basará en la API invocada. Por ejemplo, al realizar una búsqueda en el escaparate de "couch" , se utilizará el manejador V2ProductResource debido al uso de una llamada de API /api/v2/products. Por ejemplo:
2023-06-13T20:17:29.024Z [Default Executor-thread-52975] [7244267430895139116] TRACE c.h.c.search.rest.V2ProductResource.findProducts:157 - URL: https://search:30901/search/resources/api/v2/products?storeId=11&searchTerm=couch&limit=12&offset=0&contractId=-11005&currency=USD&langId=-1&profileName=HCL_V2_findProductsBySearchTermWithPrice 
Definición de perfil de búsqueda
El perfil de búsqueda contiene la información contextual principal que usaremos para crear la consulta de búsqueda y luego procesar los resultados de la búsqueda, por lo que es importante validar que el perfil de búsqueda coincida con el comportamiento esperado para esta búsqueda. Para validar la definición del perfil de búsqueda que se utiliza, puede buscar el resultado del rastreo en SearchConfigurationRegistry.getSearchProfile(). Por ejemplo, aquí se muestra la definición del perfil de búsqueda para HCL_V2_findProductsBySearchTermWithPrice:
2023-06-13T20:17:29.249Z [Default Executor-thread-52975] [7244267430895139116] TRACE c.h.c.s.i.c.SearchConfigurationRegistry.getSearchProfile:368 - ENTRY profileName:HCL_V2_findProductsBySearchTermWithPrice resourceName:productview resourceURI:/api/v2/products?searchTerm 2023-06-13T20:17:29.249Z [Default Executor-thread-52975] [7244267430895139116] TRACE c.h.c.s.i.c.SearchConfigurationRegistry.getSearchProfile:382 - EXIT searchProfile: SearchProfile [parentProfileName=, profileName=HCL_V2_findProductsBySearchTermWithPrice, indexName=product, query=Query [params=[{DynamicKitReturnPrice=true}], queryFields=[default.search.text, default.search.normalized, default.search.text_*, default.sku.normalized, natural.keywords.normalized], sortFields={1=manufacturer.raw asc, 2=name.normalized asc, 3=offer.* asc, 4=offer.* desc}, responseFields=[id.catentry, id.store, buyable, identifier.sku.raw, name.raw, name.override.raw, description.raw, description.override.raw, url.thumbnail, url.override.thumbnail, keyword.text, keyword.override.text, manufacturer.raw, id.member, seller.raw, type, prices.*, path.*, relationship.item.id, relationship.product.id, identifier.mpn.raw, attribute.*, kit.preconfigured, kit.model, kit.URL, kit.default_configuration, kit.parent.model, kit.configurable, kit.parent.configurable, start, end, *_display, url.seo, url.override.seo], highlight=null, spellcheck={limit=5}]] 
Si esto no coincide con la definición de perfil esperada, puede validar su configuración desde el punto final de la API de consulta del perfil de búsqueda. Por ejemplo, para buscar la configuración HCL_V2_findProductsBySearchTermWithPrice en el entorno de autenticación:
GET https:// data_environment_hostname :30921/search/resources/api/v2/documents/profiles/HCL_V2_findProductsBySearchTermWithPrice 
Procesamiento del lenguaje natural (NLP)
La búsqueda de Commerce utiliza NLP para realizar análisis del término o términos de búsqueda que se utilizan para identificar la intención detrás de los términos utilizados y modificar la búsqueda como corresponda. Si ve resultados inesperados, puede deberse a que este análisis de NLP se ha realizado de una manera imprevista, o porque está teniendo en cuenta puntos de datos adicionales que quizás no esté considerando para esta búsqueda.
En primer lugar, para identificar los proveedores de NLP que se utilizarán para la búsqueda, puede buscar el resultado de rastreo deSearchNLPSupportProvider.invoke(). Por ejemplo, aquí está el resultado del rastreo cuando se utiliza el perfil de NLP predeterminado:
2023-06-13T20:17:29.752Z [Default Executor-thread-52975] [7244267430895139116] TRACE c.h.c.s.i.e.p.SearchNLPSupportProvider.invoke:107 - Search NLP providers: com.hcl.commerce.search.internal.expression.provider.SearchNLPPartNumberProviderHelper com.hcl.commerce.search.internal.expression.provider.SearchNLPWhiteSpaceProviderHelper com.hcl.commerce.search.internal.expression.provider.SearchNLPCurrencySymbolProviderHelper com.hcl.commerce.search.internal.expression.provider.SearchNLPSpellCorrectionProviderHelper com.hcl.commerce.search.internal.expression.provider.SearchNLPExcludedTermProviderHelper com.hcl.commerce.search.internal.expression.provider.SearchNLPNumberFormatterProviderHelper com.hcl.commerce.search.internal.expression.provider.SearchNLPSTAExpansionProviderHelper com.hcl.commerce.search.internal.expression.provider.SearchNLPDependenciesParsingProviderHelper com.hcl.commerce.search.internal.expression.provider.SearchNLPMultiwordTermProviderHelper com.hcl.commerce.search.internal.expression.provider.SearchNLPLowerCaseProviderHelper com.hcl.commerce.search.internal.expression.provider.SearchNLPDMMProviderHelper com.hcl.commerce.search.internal.expression.provider.SearchNLPSpecialCharacterProviderHelper com.hcl.commerce.search.internal.expression.provider.SearchMultiwordFilterProviderHelper com.hcl.commerce.search.internal.expression.provider.SearchNLPStopwordProviderHelper com.hcl.commerce.search.internal.expression.provider.SearchNLPWordToNumberProviderHelper com.hcl.commerce.search.internal.expression.provider.SearchNLPPriceFilterProviderHelper com.hcl.commerce.search.internal.expression.provider.SearchNLPPOSAndNERProviderHelper com.hcl.commerce.search.internal.expression.provider.SearchNLPColorMMProviderHelper 
si desea verificar que el sistema esté utilizando Basic NLP, puede buscar el resultado de rastreo de SearchNLPSupportProvider.invoke():
Si desea comprobar que estamos utilizando Basic NLP TRACE c.h.c.s.i.e.p.SearchNLPSupportProvider.invoke:123 - Search NLP providers: com.hcl.commerce.search.internal.expression.provider.SearchNLPCustomPartNumberHelper com.hcl.commerce.search.internal.expression.provider.SearchBasicNLPCategorySearchProviderHelper com.hcl.commerce.search.internal.expression.provider.SearchNLPWhiteSpaceProviderHelper com.hcl.commerce.search.internal.expression.provider.SearchNLPCurrencySymbolProviderHelper com.hcl.commerce.search.internal.expression.provider.SearchNLPLowerCaseProviderHelper com.hcl.commerce.search.internal.expression.provider.SearchNLPSpellCorrectionProviderHelper com.hcl.commerce.search.internal.expression.provider.SearchNLPExcludedTermProviderHelper com.hcl.commerce.search.internal.expression.provider.SearchNLPFractionalNumberHelper com.hcl.commerce.search.internal.expression.provider.SearchNLPDMMProviderHelper com.hcl.commerce.search.internal.expression.provider.SearchMultiwordFilterProviderHelper com.hcl.commerce.search.internal.expression.provider.SearchBasicNLPStopwordProviderHelper com.hcl.commerce.search.internal.expression.provider.SearchNLPPriceFilterProviderHelper com.hcl.commerce.search.internal.expression.provider.SearchBasicNLPPOSAndNERProviderHelper com.hcl.commerce.search.internal.expression.provider.SearchNLPColorMMProviderHelper com.hcl.commerce.search.internal.expression.provider.SearchBasicNLPBoostQueryProviderHelper 

Si hay un proveedor de NLP en particular que no desea utilizar, o desea incluir sus propios proveedores de NLP, consulte nuestra página Perfiles de procesador de lenguaje natural (NLP) para obtener más información.

A continuación, querrá revisar cada uno de los proveedores de NLP para comprobar si ha tenido el efecto deseado en la búsqueda. Por ejemplo, si tenemos un sinónimo (Asociación de términos de búsqueda o STA) entre couch y sofa, podemos confirmar que SearchNLPSTAExpansionProviderHelper ha elegido este sinónimo al revisar el resultado del rastreo de este proveedor de NLP:
2023-06-13T20:17:30.158Z [Default Executor-thread-52975] [7244267430895139116] TRACE c.h.c.s.i.e.p.SearchNLPSTAExpansionProviderHelper.performSTAExpansion:164 - ENTRY 2023-06-13T20:17:30.159Z [Default Executor-thread-52975] [7244267430895139116] TRACE c.h.c.s.i.e.p.SearchNLPSTAExpansionProviderHelper.performSTAExpansion:165 - search term before STA expansion : couch ... 2023-06-13T20:17:30.529Z [Default Executor-thread-52975] [7244267430895139116] TRACE c.h.c.s.i.e.p.SearchNLPSTAExpansionProviderHelper.getNodeData:592 - nodeData : {sofa,couch=s} 2023-06-13T20:17:30.529Z [Default Executor-thread-52975] [7244267430895139116] TRACE c.h.c.s.i.e.p.SearchNLPSTAExpansionProviderHelper.getNodeData:594 - EXIT ... 2023-06-13T20:17:31.794Z [Default Executor-thread-52975] [7244267430895139116] TRACE c.h.c.s.i.e.p.SearchNLPSTAExpansionProviderHelper.performSTAExpansion:468 - EXIT 2023-06-13T20:17:31.794Z [Default Executor-thread-52975] [7244267430895139116] TRACE c.h.c.s.i.e.p.SearchNLPSTAExpansionProviderHelper.performSTAExpansion:470 - search term after STA expansion : sofa couch 
Consulta de Elasticsearch
Como las consultas de Elasticsearch de HCL Commerce Search se pueden almacenar en memoria caché, podemos usar el resultado de rastreo de SearchResponseCache.myInvoke() para ver la consulta de Elasticsearch que se utiliza para nuestra búsqueda. Por ejemplo, aquí está la consulta de Elasticsearch que se genera para la búsqueda anterior de "couch":
2023-06-13T20:17:32.468Z [Default Executor-thread-52975] [7244267430895139116] TRACE c.h.c.s.i.e.p.SearchResponseCache.myInvoke:562 - Cache name: com.hcl.commerce.search.internal.expression.processor.SearchExpressionProcessor Index name: auth.12001.product Source builder: {"from":0,"size":12,"query":{"function_score":{"query":{"bool":{"filter":[{"query_string":{"query":"workspace_name : \"Base\"","fields":[],"type":"best_fields","default_operator":"or", "max_determinized_states":10000,"enable_position_increments":true,"fuzziness":"AUTO","fuzzy_prefix_length":0,"fuzzy_max_expansions":50, "phrase_slop":0,"escape":false,"auto_generate_synonyms_phrase_query":true,"fuzzy_transpositions":true,"boost":1.0}}, {"query_string":{"query":"-((type:product AND relationship.has_sku:true) OR (type:variant AND state:false)) AND (relationship.product.group:*)", "fields":[],"type":"best_fields","default_operator":"or","max_determinized_states":10000,"enable_position_increments":true,"fuzziness":"AUTO", "fuzzy_prefix_length":0,"fuzzy_max_expansions":50,"phrase_slop":0,"escape":false,"auto_generate_synonyms_phrase_query":true, "fuzzy_transpositions":true,"boost":1.0}},{"query_string":{"query":"id.catalog:\"11501\"","fields":[],"type":"best_fields", "default_operator":"or","max_determinized_states":10000,"enable_position_increments":true,"fuzziness":"AUTO","fuzzy_prefix_length":0, "fuzzy_max_expansions":50,"phrase_slop":0,"escape":false,"auto_generate_synonyms_phrase_query":true,"fuzzy_transpositions":true, "boost":1.0}},{"query_string":{"query":"id.store:(\"11\" \"12001\")","fields":[],"type":"best_fields","default_operator":"or", "max_determinized_states":10000,"enable_position_increments":true,"fuzziness":"AUTO","fuzzy_prefix_length":0, "fuzzy_max_expansions":50,"phrase_slop":0,"escape":false,"auto_generate_synonyms_phrase_query":true,"fuzzy_transpositions":true,"boost":1.0}}, {"query_string":{"query":"id.language:\"-1\"","fields":[],"type":"best_fields","default_operator":"or","max_determinized_states":10000, "enable_position_increments":true,"fuzziness":"AUTO","fuzzy_prefix_length":0,"fuzzy_max_expansions":50,"phrase_slop":0,"escape":false, "auto_generate_synonyms_phrase_query":true,"fuzzy_transpositions":true,"boost":1.0}},{"query_string":{"query":"displayable:true", "fields":[],"type":"best_fields","default_operator":"or","max_determinized_states":10000,"enable_position_increments":true, "fuzziness":"AUTO","fuzzy_prefix_length":0,"fuzzy_max_expansions":50,"phrase_slop":0, "escape":false,"auto_generate_synonyms_phrase_query":true,"fuzzy_transpositions":true,"boost":1.0}}, {"query_string":{"query":"(*:* AND -_exists_:facets.7000000000000001010.value.raw)","fields":[],"type":"best_fields", "default_operator":"or","max_determinized_states":10000,"enable_position_increments":true,"fuzziness":"AUTO","fuzzy_prefix_length":0, "fuzzy_max_expansions":50,"phrase_slop":0,"escape":false,"auto_generate_synonyms_phrase_query":true,"fuzzy_transpositions":true, "boost":1.0}}],"should":[{"query_string":{"query":"(\"sofa\" OR \"couch\")","fields":["default.search.normalized^1.0", "default.search.text^1.0","default.search.text_en_US^1.0","default.sku.normalized^1.0","natural.keywords.normalized^100.0", "natural.nouns.normalized^100.0"],"type":"most_fields","default_operator":"and","max_determinized_states":10000, "enable_position_increments":true,"fuzziness":"AUTO","fuzzy_prefix_length":0,"fuzzy_max_expansions":50, "phrase_slop":0,"lenient":true,"escape":false,"auto_generate_synonyms_phrase_query":true,"fuzzy_transpositions":true,"boost":1.0}}, {"query_string":{"query":"(\"sofa\" OR \"couch\")","fields":["default.search.normalized^1.0","default.search.text^1.0", "default.search.text_en_US^1.0","default.sku.normalized^1.0","natural.keywords.normalized^100.0","natural.nouns.raw^100.0"], "type":"most_fields","default_operator":"and","max_determinized_states":10000,"enable_position_increments":true, "fuzziness":"AUTO","fuzzy_prefix_length":0,"fuzzy_max_expansions":50,"phrase_slop":0,"lenient":true,"escape":false, "auto_generate_synonyms_phrase_query":true,"fuzzy_transpositions":true,"boost":1.0}}],"adjust_pure_negative":true, "minimum_should_match":"1","boost":1.0}},"functions":[{"filter":{"match_all":{"boost":1.0}},"script_score":{"script":{"id":"boost-script-param-1", "params":{"boostFactor":10.0,"param1":"couch"}}}}],"score_mode":"sum","boost_mode":"sum","max_boost":3.4028235E38,"boost":1.0}}, "explain":true,"_source":false,"stored_fields":["id.catentry","id.store","buyable","identifier.sku.raw","manufacturer.raw", "id.member","seller.raw","type","prices.-11005.usd","path.11001","path.11501","path.11502","relationship.item.id","relationship.product.id", "identifier.mpn.raw","attribute.*","kit.preconfigured","kit.model","kit.URL","kit.default_configuration","kit.parent.model", "kit.configurable","kit.parent.configurable","start","end","*_display","prices.list.usd","prices.offer.usd","name.11.raw", "description.11.raw","url.11.thumbnail","keyword.11.text","url.11.seo","url.12001.thumbnail","url.12001.seo","name.12001.raw", "description.12001.raw","keyword.12001.text"],"track_total_hits":2147483647, "aggregations":{"itemCount":{"cardinality":{"field":"relationship.product.group"}}}, "suggest":{"correction":{"text":"couch","term":{"field":"default.correction.text","size":5,"suggest_mode":"MISSING", "accuracy":0.3,"sort":"SCORE","string_distance":"INTERNAL","max_edits":2,"max_inspections":5,"max_term_freq":0.01, "prefix_length":2,"min_word_length":4,"min_doc_freq":0.0}}},"collapse":{"field":"relationship.product.group","inner_hits":{"name":"data", "ignore_unmapped":false,"from":0,"size":20000,"version":false,"seq_no_primary_term":false,"explain":false,"track_scores":false, "stored_fields":["url.12001.thumbnail","url.11.thumbnail","id.*","prices.*"]}}} 
Dado que toda la consulta de ElasticSearch está impresa en el rastreo, puede tomar esta consulta JSON y ejecutarla usted mismo directamente en el índice de su producto. Por ejemplo, así es como se podría ejecutar directamente esta misma consulta de ElasticSearch:
POST http://{{es_hostname_port}}/auth.12001.product/_search { "from": 0, "size": 12, "query": { "function_score": { "query": { "bool": { "filter": [ { "query_string": { "query": "workspace_name : \"Base\"", "fields": [], "type": "best_fields", "default_operator": "or", "max_determinized_states": 10000, "enable_position_increments": true, "fuzziness": "AUTO", "fuzzy_prefix_length": 0, "fuzzy_max_expansions": 50, "phrase_slop": 0, "escape": false, "auto_generate_synonyms_phrase_query": true, "fuzzy_transpositions": true, "boost": 1.0 } }, { "query_string": { "query": "-((type:product AND relationship.has_sku:true) OR (type:variant AND state:false)) AND (relationship.product.group:*)", "fields": [], "type": "best_fields", "default_operator": "or", "max_determinized_states": 10000, "enable_position_increments": true, "fuzziness": "AUTO", "fuzzy_prefix_length": 0, "fuzzy_max_expansions": 50, "phrase_slop": 0, "escape": false, "auto_generate_synonyms_phrase_query": true, "fuzzy_transpositions": true, "boost": 1.0 } }, { "query_string": { "query": "id.catalog:\"11501\"", "fields": [], "type": "best_fields", "default_operator": "or", "max_determinized_states": 10000, "enable_position_increments": true, "fuzziness": "AUTO", "fuzzy_prefix_length": 0, "fuzzy_max_expansions": 50, "phrase_slop": 0, "escape": false, "auto_generate_synonyms_phrase_query": true, "fuzzy_transpositions": true, "boost": 1.0 } }, { "query_string": { "query": "id.store:(\"11\" \"12001\")", "fields": [], "type": "best_fields", "default_operator": "or", "max_determinized_states": 10000, "enable_position_increments": true, "fuzziness": "AUTO", "fuzzy_prefix_length": 0, "fuzzy_max_expansions": 50, "phrase_slop": 0, "escape": false, "auto_generate_synonyms_phrase_query": true, "fuzzy_transpositions": true, "boost": 1.0 } }, { "query_string": { "query": "id.language:\"-1\"", "fields": [], "type": "best_fields", "default_operator": "or", "max_determinized_states": 10000, "enable_position_increments": true, "fuzziness": "AUTO", "fuzzy_prefix_length": 0, "fuzzy_max_expansions": 50, "phrase_slop": 0, "escape": false, "auto_generate_synonyms_phrase_query": true, "fuzzy_transpositions": true, "boost": 1.0 } }, { "query_string": { "query": "displayable:true", "fields": [], "type": "best_fields", "default_operator": "or", "max_determinized_states": 10000, "enable_position_increments": true, "fuzziness": "AUTO", "fuzzy_prefix_length": 0, "fuzzy_max_expansions": 50, "phrase_slop": 0, "escape": false, "auto_generate_synonyms_phrase_query": true, "fuzzy_transpositions": true, "boost": 1.0 } }, { "query_string": { "query": "(*:* AND -_exists_:facets.7000000000000001010.value.raw)", "fields": [], "type": "best_fields", "default_operator": "or", "max_determinized_states": 10000, "enable_position_increments": true, "fuzziness": "AUTO", "fuzzy_prefix_length": 0, "fuzzy_max_expansions": 50, "phrase_slop": 0, "escape": false, "auto_generate_synonyms_phrase_query": true, "fuzzy_transpositions": true, "boost": 1.0 } } ], "should": [ { "query_string": { "query": "(\"sofa\" OR \"couch\")", "fields": [ "default.search.normalized^1.0", "default.search.text^1.0", "default.search.text_en_US^1.0", "default.sku.normalized^1.0", "natural.keywords.normalized^100.0", "natural.nouns.normalized^100.0" ], "type": "most_fields", "default_operator": "and", "max_determinized_states": 10000, "enable_position_increments": true, "fuzziness": "AUTO", "fuzzy_prefix_length": 0, "fuzzy_max_expansions": 50, "phrase_slop": 0, "lenient": true, "escape": false, "auto_generate_synonyms_phrase_query": true, "fuzzy_transpositions": true, "boost": 1.0 } }, { "query_string": { "query": "(\"sofa\" OR \"couch\")", "fields": [ "default.search.normalized^1.0", "default.search.text^1.0", "default.search.text_en_US^1.0", "default.sku.normalized^1.0", "natural.keywords.normalized^100.0", "natural.nouns.raw^100.0" ], "type": "most_fields", "default_operator": "and", "max_determinized_states": 10000, "enable_position_increments": true, "fuzziness": "AUTO", "fuzzy_prefix_length": 0, "fuzzy_max_expansions": 50, "phrase_slop": 0, "lenient": true, "escape": false, "auto_generate_synonyms_phrase_query": true, "fuzzy_transpositions": true, "boost": 1.0 } } ], "adjust_pure_negative": true, "minimum_should_match": "1", "boost": 1.0 } }, "functions": [ { "filter": { "match_all": { "boost": 1.0 } }, "script_score": { "script": { "id": "boost-script-param-1", "params": { "boostFactor": 10.0, "param1": "couch" } } } } ], "score_mode": "sum", "boost_mode": "sum", "max_boost": 3.4028235E38, "boost": 1.0 } }, "explain": true, "_source": false, "stored_fields": [ "id.catentry", "id.store", "buyable", "identifier.sku.raw", "manufacturer.raw", "id.member", "seller.raw", "type", "prices.-11005.usd", "path.11001", "path.11501", "path.11502", "relationship.item.id", "relationship.product.id", "identifier.mpn.raw", "attribute.*", "kit.preconfigured", "kit.model", "kit.URL", "kit.default_configuration", "kit.parent.model", "kit.configurable", "kit.parent.configurable", "start", "end", "*_display", "prices.list.usd", "prices.offer.usd", "name.11.raw", "description.11.raw", "url.11.thumbnail", "keyword.11.text", "url.11.seo", "url.12001.thumbnail", "url.12001.seo", "name.12001.raw", "description.12001.raw", "keyword.12001.text" ], "track_total_hits": 2147483647, "aggregations": { "itemCount": { "cardinality": { "field": "relationship.product.group" } } }, "suggest": { "correction": { "text": "couch", "term": { "field": "default.correction.text", "size": 5, "suggest_mode": "MISSING", "accuracy": 0.3, "sort": "SCORE", "string_distance": "INTERNAL", "max_edits": 2, "max_inspections": 5, "max_term_freq": 0.01, "prefix_length": 2, "min_word_length": 4, "min_doc_freq": 0.0 } } }, "collapse": { "field": "relationship.product.group", "inner_hits": { "name": "data", "ignore_unmapped": false, "from": 0, "size": 20000, "version": false, "seq_no_primary_term": false, "explain": false, "track_scores": false, "stored_fields": [ "url.12001.thumbnail", "url.11.thumbnail", "id.*", "prices.*" ] } } }
Versión final de la respuesta de REST
Para encontrar el final del procesamiento de la solicitud de REST, puede consultar el resultado de rastreo de AbstractSearchResource.executeSearch(). Por ejemplo, aquí está la versión final de la respuesta de REST para la búsqueda de "couch" (condensada por brevedad):
2023-06-13T20:17:33.782Z [Default Executor-thread-52975] [7244267430895139116] TRACE c.h.c.s.rest.AbstractSearchResource.executeSearch:505 - Result : <200 OK OK,{catalogEntryView=[{hasSingleSKU=false, buyable=true, resourceId=https://search:30901/search/resources/api/v2/products?storeId=11&searchTerm=couch&limit=12&offset=0&contractId=-11005&currency=USD&langId=-1&profileName=HCL_V2_findProductsBySearchTermWithPrice, uniqueID=14033, thumbnailRaw=/EmeraldCAS/images/catalog/livingroom/furniture/chair4_b1_350.jpg, thumbnail=/hclstore/EmeraldCAS/images/catalog/livingroom/furniture/chair4_b1_350.jpg, sellerId=7000000000000003501, parentCatalogGroupID=/10501/10502, manufacturer=Stonehenge, shortDescription=Very cozy short design single sofa., catalogEntryTypeCode=ProductBean, groupingProperties={groupOfferPriceRange=[Ljava.lang.Object;@682c66e4, groupListPriceRange=[Ljava.lang.Object;@c25e4f60, groupCount=4, groupOwner=14033, groupMaxPriceValue=749.99, groupHero=14035, groupMinPriceValue=749.99}, name=Stonehenge UltraCozy Single Sofa, partNumber=LR-FNTR-0004, storeID=11, seo={href=/stonehenge-ultracozy-single-sofa-lr-fntr-0004}, price=[{usage=Display, description=L, currency=USD, value=800.0}, {usage=Offer, contractId=-11005, description=I, currency=USD, value=749.99}], attributes=[{identifier=Color, attribute.group= , attribute.natural=["Brown","Dark Grey","Seaweed","Denim"], usage=Defining, values=[{sequence=[2.0, 10.0, 10.0, 10.0], identifier=[brown, darkgrey, seaweed, denim], unitOfMeasure=[one, one, one, one], unitID=[C62, C62, C62, C62], image1=[/EmeraldCAS/images/catalog/swatches/sw_brown.png, /EmeraldCAS/images/catalog/swatches/sw_darkgrey.png, /EmeraldCAS/images/catalog/swatches/sw_seaweed.png, /EmeraldCAS/images/catalog/swatches/sw_denim.png], value=[Brown, Dark Grey, Seaweed, Denim], image1path=[/hclstore/EmeraldCAS/images/catalog/swatches/sw_brown.png, /hclstore/EmeraldCAS/images/catalog/swatches/sw_darkgrey.png, /hclstore/EmeraldCAS/images/catalog/swatches/sw_seaweed.png, /hclstore/EmeraldCAS/images/catalog/swatches/sw_denim.png], uniqueID=[7000000000000003002, 7000000000000003010, 7000000000000003014, 7000000000000003020]}], displayable=true, merchandisable=true, searchable=true, sequence=1.0, storeDisplay=false, name=Color, attribute.store=12001, facetable=true, comparable=true, uniqueID=7000000000000000501, swatchable=false}]}, ... ], displayable=true, merchandisable=true, searchable=true, sequence=1.0, storeDisplay=false, name=Color, attribute.store=12001, facetable=true, comparable=true, uniqueID=7000000000000000501, swatchable=false}]}], recordSetComplete=false, recordSetCount=12, recordSetStartNumber=0, recordSetTotal=22, resourceId=https://search:30901/search/resources/api/v2/products?storeId=11&searchTerm=couch&limit=12&offset=0&contractId=-11005&currency=USD&langId=-1&profileName=HCL_V2_findProductsBySearchTermWithPrice, recordSetTotalMatches=22, resourceName=productview, facetView=[], metaData={price=1}},[]>