No encuentro un item que esta cargado en el indice

Estimados, tengo ei siguiente item cargado en el indice:

{
"_index": "books_ar",
"_type": "item",
"_id": "1225714",
"_score": 10.9347725,
"_source": {
"title": "Fueron por todo",
"catalogitem_id": "1225714",,
"language_code": "es",
"external_id": "9789500758222",
"language": "Español",
"provider": "LC2",
"publisher": "Penguin Random House Grupo Editorial Argentina",
"contributor": "Nicolás Wiñazki",
"author": "Nicolás Wiñazki",
"author_id": "255669"
}

Pero cuando hago una busqueda por title "Fueron por todo" no lo encuentra. Esta es mi query.

{
"query": {
"multi_match": {
"query": "Fueron por todo",
"type": "best_fields",
"fuzziness": "AUTO",
"fields": ["title"],
"tie_breaker": 0.3
}
}
}

Y este es mi mapping para ese campo:

"title":{
"type": "string",
"analyzer":"spanish",
"fielddata":true,
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed"
}
}
}

Al igual que este titulo hay muchos otros que pasa lo mismo. Y no entiendo el por que, si pueden ayudarme seria de mucha ayuda.

Gracias!!

Hola @leandrobara,

Cual es la configuración del analyzer spanish ? Eso lo puedes ver en los index settings.

Saludos!

Hola, este es mi mapping:

{
"settings" : {
"analysis" : {
"analyzer":{
"no_accent": {
"tokenizer": "standard",
"filter": [ "lowercase", "asciifolding", "default_spanish_stopwords", "default_spanish_stemmer", "spanish_stop" ]
}
},
"filter" : {
"default_spanish_stemmer" : {
"type" : "stemmer",
"name" : "spanish"
},
"default_spanish_stopwords": {
"type": "stop",
"stopwords": [ "spanish" ]
}
}
}
},
"mappings": {
"notfound": {
"_all":{"enabled": false},
"properties": {
"query":{"type":"string","analyzer":"spanish"},
"date": {"type": "date", "format": "yyyy-MM-dd HH:mm:ss", "null_value": "1970-01-01 00:00:01"}
}
},
"item": {
"_all":{"enabled": false},
"properties": {
"catalogitem_id":{"type": "keyword"},
"external_id":{"type": "keyword"},
"title":{
"type": "string",
"analyzer":"spanish",
"fielddata":true,
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed"
}
}
},
"contributor":{"type": "string", "fielddata":true},
"author":{"type": "string", "index": "not_analyzed"},
"author_id":{"type": "string", "index": "not_analyzed"},
}
}
}
}

Y otra pregunta, porque quieres utilizar el multi_match aqui ? Si solo estas buscando en un unico campo?

Saludos!
--Gabriel

Gracias por responser!! mmm cual sería la query correcta?

Estimaria que un simple match lo haria: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query.html

Ya intente con esa query, pero no... :sob:

Request:
{
"query": {
"match" : { "title" : "Fueron por todo" }
}
}

Response:
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 0,
"max_score": null,
"hits": []
}
}

Parece que tu problema es que el analizador no devuelve ningún token. Fijate esto:


GET test/_search
{
  "aggs": {
    "NAME": {
      "terms": {
        "field": "title",
        "size": 10
      }
    }
  }
}

POST test/_analyze?text=Fueron por todo&analyzer=spanish

Tanto el aggregation, como el analizador no muestra nada si solo pongo ese documento. Algo con respecto a l spanish analyzer.

Todas las palabras de esa frase son stopwords, entonces no devuelve nada.
Saludos,

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.