Цель: мне нужен запрос, который добавляет поле дискриминатора для различения guish нечетких и нечетких результатов.
Рассмотрим следующие документы:
curl -X POST "localhost:9200/_bulk" -H 'Content-Type: application/json' -d'
{
"index": {
"_index": "dishes",
"_type": "dish",
"_id": "1"
}
}
{
"name": "butter chicken"
}
{
"index": {
"_index": "dishes",
"_type": "dish",
"_id": "2"
}
}
{
"name": "chicken burger"
}
'
Рассмотрим следующий запрос:
curl -X POST "localhost:9200/dishes/_search?pretty" -H 'Content-Type: application/json' -d'
{
"query": {
"bool": {
"should": [
{
"term": {
"name": "burger"
}
},
{
"fuzzy": {
"name": {
"value": "burger"
}
}
}
],
"minimum_should_match": 1,
"boost": 1.0
}
}
}
'
Могу ли я получить результат с дополнительным тегом, созданным во время запроса (его нет в документе), который можно использовать для различения того, что является нечетким результатом, и тем, что является нечеткий результат.
...
"hits" : [
{
"_index" : "dishes",
"_type" : "dish",
"_id" : "2",
"_score" : 1.3862942,
"_source" : {
"name" : "chicken burger"
},
<b><em>"is_fuzzy": false</em></b>
},
{
"_index" : "dishes",
"_type" : "dish",
"_id" : "1",
"_score" : 0.46209806,
"_source" : {
"name" : "butter chicken"
},
<b><em>"is_fuzzy": true</em></b>
}
]
Поля со сценариями могли быть идеальными. Но пока не повезло.
У меня есть требование представить нечеткие результаты до нечетких результатов. Таким образом, сортировка по is_fuzzy, а затем _score гарантированно работает. (Фактический запрос более сложный.)
sort: [
{
"is_fuzzy": {
"order": "desc"
}
},
{
"_score": {
"order": "desc"
}
}