No encuentro un item que esta cargado en el indice


(leandro) #1

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!!


(Gabriel Moskovicz) #2

Hola @leandrobara,

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

Saludos!


(leandro) #3

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"},
}
}
}
}


(Gabriel Moskovicz) #4

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

Saludos!
--Gabriel


(leandro) #5

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


(Gabriel Moskovicz) #6

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


(leandro) #7

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": []
}
}


(Gabriel Moskovicz) #8

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,


(system) #9

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