2017-02-20 3 views
0

может ли кто-нибудь сказать мне, как строгого соответствия в elasticsearch-js. вот мой поискузел эластичный поиск строгого соответствия

client.search({{ 
    index: 'hash_tag', 
    type: 'hash_tag', 
    lenient:false, 
    body: { 
    query: { 
     match: { 
     tag_name: 'hash tag 1' 
     } 
    } 
    } 
}).then(function (body) { 
    console.log("body", JSON.stringify(body)); 
    }, function (error) { 
    console.trace(error.message); 
}) 

этот поисковый запрос либо хэш, тег, 1 я ищу для точной целой строки match.here мой стиль пример индекса.

{ 
    "_index": "hash_tag", 
    "_type": "hash_tag", 
    "_id": "3483", 
    "_score": 0.019691018, 
    "_source": { 
    "id": "3483", 
    "labels": [ 
     "hash_tag" 
    ], 
    "tag_name": "hash tag 2" 
    } 
} 

ответ

0

по умолчанию elasticsearch будет «разметить» текстовые поля, чтобы добавить их в перевернутый индекс, поэтому вы получите результаты для каждого термина используется.

Для того, чтобы получить полный матч вы можете иметь различные подходы, проще было бы использовать match_frase:

GET /megacorp/employee/_search 
{ 
"query" : { 
    "match_phrase" : { 
     "about" : "rock climbing" 
    } 
    } 
} 

Другим вариантом было бы добавить, что конкретное поле с отображением not_analyzed, то текст не будет обозначаться.

+0

Это работает. спасибо маркос – shivshankar

Смежные вопросы