0

Я пытаюсь реализовать частичное совпадение с использованием ngrams в elasticsearch, но не получая ожидаемых результатов от него.
Я по этой ссылке: -Результаты поиска elasticsearch ngrams ошибочны

https://www.elastic.co/guide/en/elasticsearch/guide/current/_index_time_search_as_you_type.html
Я сделал все вещи, которые упоминаются в этой связи. Мой набор данных содержит 3 поля i.e id, name, age.

Вот мое отображение и настройка my_index

GET /my_index/_settings 
{ 
    "my_index": { 
     "settings": { 
     "index": { 
      "creation_date": "1433249154544", 
      "uuid": "hKxHVnqaRVmji31xK92pVA", 
      "number_of_replicas": "1", 
      "analysis": { 
       "filter": { 
        "autocomplete_filter": { 
        "type": "edge_ngram", 
        "min_gram": "1", 
        "max_gram": "20" 
        } 
       }, 
       "analyzer": { 
        "autocomplete": { 
        "type": "custom", 
        "filter": [ 
         "lowercase", 
         "autocomplete_filter" 
        ], 
        "tokenizer": "standard" 
        } 
       } 
      }, 
      "number_of_shards": "1", 
      "version": { 
       "created": "1040499" 
      } 
     } 
     } 
    } 
} 


GET /my_index/_mapping/my_type 
{ 
    "my_index": { 
     "mappings": { 
     "my_type": { 
      "properties": { 
       "@timestamp": { 
        "type": "date", 
        "format": "dateOptionalTime" 
       }, 
       "@version": { 
        "type": "string" 
       }, 
       "age": { 
        "type": "long" 
       }, 
       "host": { 
        "type": "string" 
       }, 
       "id": { 
        "type": "string" 
       }, 
       "message": { 
        "type": "string" 
       }, 
       "name": { 
        "type": "string", 
        "index_analyzer": "autocomplete", 
        "search_analyzer": "standard" 
       }, 
       "path": { 
        "type": "string" 
       }, 
       "type": { 
        "type": "string" 
       } 
      } 
     } 
     } 
    } 
} 


Мой запрос упругим поиска является: -

GET /my_index/my_type/_search 
{ 
    "query": { 
     "match": { 
      "name": { 
       "query": "raman r" 
      } 
     } 
    } 
} 


По мне н вл результаты должны отображаться только «комбинационный баран», но он также показывает другие результаты, а также: -

{ 
    "took": 13, 
    "timed_out": false, 
    "_shards": { 
     "total": 1, 
     "successful": 1, 
     "failed": 0 
    }, 
    "hits": { 
     "total": 9, 
     "max_score": 2.6631343, 
     "hits": [ 
     { 
      "_index": "my_index", 
      "_type": "my_type", 
      "_id": "2", 
      "_score": 2.6631343, 
      "_source": { 
       "message": [ 
        "2,raman,23" 
       ], 
       "@version": "1", 
       "@timestamp": "2015-06-02T13:07:18.041Z", 
       "type": "my_type", 
       "host": "shubham-VirtualBox", 
       "path": "/home/shubham/sample.csv", 
       "id": "2", 
       "name": "raman", 
       "age": 23 
      } 
     }, 
     { 
      "_index": "my_index", 
      "_type": "my_type", 
      "_id": "10", 
      "_score": 1.8003473, 
      "_source": { 
       "message": [ 
        "10,raman ram,43" 
       ], 
       "@version": "1", 
       "@timestamp": "2015-06-02T13:11:03.455Z", 
       "type": "my_type", 
       "host": "shubham-VirtualBox", 
       "path": "/home/shubham/sample.csv", 
       "id": "10", 
       "name": "raman ram", 
       "age": 43 
      } 
     }, 
     { 
      "_index": "my_index", 
      "_type": "my_type", 
      "_id": "1", 
      "_score": 0.26245093, 
      "_source": { 
       "message": [ 
        "1,Ram,342" 
       ], 
       "@version": "1", 
       "@timestamp": "2015-06-02T13:07:18.040Z", 
       "type": "my_type", 
       "host": "shubham-VirtualBox", 
       "path": "/home/shubham/sample.csv", 
       "id": "1", 
       "name": "Ram", 
       "age": 342 
      } 
     }, 
     { 
      "_index": "my_index", 
      "_type": "my_type", 
      "_id": "3", 
      "_score": 0.26245093, 
      "_source": { 
       "message": [ 
        "3,ramayan,23" 
       ], 
       "@version": "1", 
       "@timestamp": "2015-06-02T13:07:18.041Z", 
       "type": "my_type", 
       "host": "shubham-VirtualBox", 
       "path": "/home/shubham/sample.csv", 
       "id": "3", 
       "name": "ramayan", 
       "age": 23 
      } 
     }, 
     { 
      "_index": "my_index", 
      "_type": "my_type", 
      "_id": "4", 
      "_score": 0.26245093, 
      "_source": { 
       "message": [ 
        "4,ramaram,231" 
       ], 
       "@version": "1", 
       "@timestamp": "2015-06-02T13:07:18.041Z", 
       "type": "my_type", 
       "host": "shubham-VirtualBox", 
       "path": "/home/shubham/sample.csv", 
       "id": "4", 
       "name": "ramaram", 
       "age": 231 
      } 
     }, 
     { 
      "_index": "my_index", 
      "_type": "my_type", 
      "_id": "5", 
      "_score": 0.26245093, 
      "_source": { 
       "message": [ 
        "5,rampy,1" 
       ], 
       "@version": "1", 
       "@timestamp": "2015-06-02T13:07:18.041Z", 
       "type": "my_type", 
       "host": "shubham-VirtualBox", 
       "path": "/home/shubham/sample.csv", 
       "id": "5", 
       "name": "rampy", 
       "age": 1 
      } 
     }, 
     { 
      "_index": "my_index", 
      "_type": "my_type", 
      "_id": "6", 
      "_score": 0.26245093, 
      "_source": { 
       "message": [ 
        "6,ration,11" 
       ], 
       "@version": "1", 
       "@timestamp": "2015-06-02T13:07:18.041Z", 
       "type": "my_type", 
       "host": "shubham-VirtualBox", 
       "path": "/home/shubham/sample.csv", 
       "id": "6", 
       "name": "ration", 
       "age": 11 
      } 
     }, 
     { 
      "_index": "my_index", 
      "_type": "my_type", 
      "_id": "7", 
      "_score": 0.26245093, 
      "_source": { 
       "message": [ 
        "7,rita,42" 
       ], 
       "@version": "1", 
       "@timestamp": "2015-06-02T13:07:18.042Z", 
       "type": "my_type", 
       "host": "shubham-VirtualBox", 
       "path": "/home/shubham/sample.csv", 
       "id": "7", 
       "name": "rita", 
       "age": 42 
      } 
     }, 
     { 
      "_index": "my_index", 
      "_type": "my_type", 
      "_id": "8", 
      "_score": 0.26245093, 
      "_source": { 
       "message": [ 
        "8,roni,45" 
       ], 
       "@version": "1", 
       "@timestamp": "2015-06-02T13:07:18.050Z", 
       "type": "my_type", 
       "host": "shubham-VirtualBox", 
       "path": "/home/shubham/sample.csv", 
       "id": "8", 
       "name": "roni", 
       "age": 45 
      } 
     } 
     ] 
    } 
} 

ответ

1

я получить правильные результаты, когда я использую «minimum_should_match»: «100%» при запросе.

GET /my_index/my_type/_search 
{ 
    "query": { 
     "match": { 
      "name": { 
       "query": "raman r", 
       "minimum_should_match": "100%" 
      } 
     } 
    } 
} 


дал мне лучший результат, хотя рейтинг не прав:

{ 
    "took": 4, 
    "timed_out": false, 
    "_shards": { 
     "total": 1, 
     "successful": 1, 
     "failed": 0 
    }, 
    "hits": { 
     "total": 2, 
     "max_score": 2.6631343, 
     "hits": [ 
     { 
      "_index": "my_index", 
      "_type": "my_type", 
      "_id": "2", 
      "_score": 2.6631343, 
      "_source": { 
       "message": [ 
        "2,raman,23" 
       ], 
       "@version": "1", 
       "@timestamp": "2015-06-02T13:07:18.041Z", 
       "type": "my_type", 
       "host": "shubham-VirtualBox", 
       "path": "/home/shubham/sample.csv", 
       "id": "2", 
       "name": "raman", 
       "age": 23 
      } 
     }, 
     { 
      "_index": "my_index", 
      "_type": "my_type", 
      "_id": "10", 
      "_score": 1.8003473, 
      "_source": { 
       "message": [ 
        "10,raman ram,43" 
       ], 
       "@version": "1", 
       "@timestamp": "2015-06-02T13:11:03.455Z", 
       "type": "my_type", 
       "host": "shubham-VirtualBox", 
       "path": "/home/shubham/sample.csv", 
       "id": "10", 
       "name": "raman ram", 
       "age": 43 
      } 
     } 
     ] 
    } 
} 


Не знаю, является ли этот подход является правильным или нет, но скажите мне, если какая-то альтернатива есть для этого