Выделите поле объекта, получите связанное поле этого объекта - PullRequest
4 голосов
/ 30 апреля 2019

Я работаю сasticsearch7, и я использую подсветку в определенной области объекта.Мой объект получает 3 атрибута:

attribute1
attribute2
attribute3

attribute1 и attribute2 - просто число.Но я хочу выполнить поиск в моем attribute3 и другом поле (что я и сделал), выделите поле attribute3, если мой запрос соответствует (что я и сделал), но я также хочу, чтобы attribute1 и attribute2 были в моем выделении.Вот пример

PUT
 { 
   "title": "title",
   "desc": "this is a test",
   "more_info": [{ 
     "rng":     486513,
     "more" : "Lorem ipsum dolor sit amet, consectetur adipiscing elit,"
   },
     {
      "rng": 145142
     "more": "What is my purpose ? To be an example. oh god"
     }
   ]
 }

GET
{
     "query": {
            'bool': {
                   'should' : { [
                          'multi_match' : {
                                'query' : 'dolor sit amet'
                                'fields' : [ 'title', 'more_info.more']
                           }
                    ]}
             }
       }
       'highlight' : {
             'fields' : {[
                     'more_info': {
                           "fragment_size" => 0,
                           "number_of_fragments" => 1,
                           "no_match_size" => 250,
                           "boundary_scanner" => "sentence"
                      }
              }]
       }
}

Итак, мой результат - это то, чего я хочу, ожидая в моем свете, я получил Lorem ipsum dolor sit amet, consectetur adipiscing elit, ведьма - то, чего я хочу, но я также хочу 486513 как-то где-то

PS: Имейте в виду, что я работаю с Symfony, поэтому я перевел с php, у него может быть какая-то синтаксическая ошибка, но у меня есть результат, который я хочу, я просто не знаю, как добавить нужную информацию.

1 Ответ

2 голосов
/ 11 мая 2019

Не похоже, что Elasticsearch позволяет выделять поля, которые не совпадают. Что имеет большой смысл. единственное решение, которое я могу придумать, - это объединить ваши два поля. При этом у вас будет только одно поле:

 "more_info" :  "486513 - Lorem ipsum dolor sit amet, consectetur adipiscing elit,"

, и вы можете оставить свой основной запрос таким, какой он есть сейчас.

Тогда вы будете соответствовать своему полю, отсюда вы можете работать с вашими данными, чтобы разделить их. Не самая лучшая практика, но попытка выделить поле, которое не соответствует, довольно странная, во-первых

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