Я озадачен этим
У меня есть следующее поле, определенное в упругом
"Email": {
"type": "text",
"boost": 0,
"index": false,
"analyzer": "standard"
}
, однако, когда я ищу записи, я получаю записи, которые соответствуют только этому полю сследующее выделенное выражение включено
"highlight": {
"properties.Email": [
"<mark>someone</mark>@somewhere.com"
]
}
Насколько я понимаю, индекс: false должен препятствовать тому, чтобы это поле было доступным для поиска, и что, если оно не доступно для поиска, не должно включаться в выделенные результаты
так что мое понимание неверно или что-то не так, иначе неправильно
РЕДАКТИРОВАТЬ: дополнительная информация, запрашиваемая для полного сопоставления, была запрошена оригинальными данными GeoJson
"index_5b17968c789cdb21dea23bfa": {
"mappings": {
"client_record": {
"properties": {
"geometry": {
"type": "geo_shape"
},
"job_id": {
"type": "keyword",
"boost": 0,
"index": false
},
"properties": {
"properties": {
"Address": {
"type": "keyword",
"boost": 0,
"index": false
},
"Address_1": {
"type": "text",
"boost": 0,
"index": false,
"analyzer": "standard"
},
"Address_2": {
"type": "keyword",
"boost": 0,
"index": false
},
"Address_3": {
"type": "text",
"boost": 0,
"index": false,
"analyzer": "standard"
},
"Company": {
"type": "keyword",
"boost": 18
},
"County": {
"type": "text",
"boost": 0,
"index": false,
"analyzer": "standard"
},
"Email": {
"type": "text",
"boost": 0,
"index": false,
"analyzer": "standard"
},
"Ref_ID": {
"type": "keyword",
"boost": 27
},
"FirstName": {
"type": "text",
"boost": 0,
"index": false,
"analyzer": "standard"
},
"Job_Title": {
"type": "keyword",
"boost": 0,
"index": false
},
"Land_Description": {
"type": "keyword",
"boost": 0,
"index": false
},
"Registry_Title": {
"type": "keyword",
"boost": 18
},
"LastName": {
"type": "keyword",
"boost": 0,
"index": false
},
"Middlename": {
"type": "keyword",
"boost": 0,
"index": false
},
"Mobile": {
"type": "keyword",
"boost": 0,
"index": false
},
"Name": {
"type": "keyword",
"boost": 18
},
"Notes": {
"type": "keyword",
"boost": 0,
"index": false
},
"Record_Type": {
"type": "keyword",
"boost": 0,
"index": false
},
"Parish_Council": {
"type": "keyword",
"boost": 0,
"index": false
},
"Item_Name": {
"type": "keyword",
"boost": 0,
"index": false
},
"Postcode": {
"type": "keyword",
"boost": 0,
"index": false
},
"Preferred_Contact_Method": {
"type": "keyword",
"boost": 0,
"index": false
},
"Prior_Notification": {
"type": "keyword",
"boost": 0,
"index": false
},
"Tel": {
"type": "keyword",
"boost": 0,
"index": false
},
"Tenure": {
"type": "keyword",
"boost": 0,
"index": false
},
"Title": {
"type": "keyword",
"boost": 0,
"index": false
},
"Town": {
"type": "keyword",
"boost": 0,
"index": false
},
"Work_Tel": {
"type": "keyword",
"boost": 0,
"index": false
}
}
},
"type": {
"type": "keyword",
"boost": 0,
"index": false
}
}
}
}
}
}
была запрошена логика поиска, поэтому добавлениеэто здесь
Я использую интерфейс PHP, но это поисковый запрос
, где $ q - строка, предоставленная индексом пользователя $, - это индексы, по которым производится поиск
[
'index' => $index ,
'ignore_unavailable'=>true,
'size' => 20,
'body' => [
'query' => [
'bool' => [
'must' => [
"bool" => [
"should" => [
[
"match_phrase" => [
"_all" => [
"query" => $q,
"boost" => 8
]
]
],
[
"match" => [
"_all" => [
"query" => $q,
"operator"=> "and",
"boost" => 2
]
]
],
[
"match" => [
"_all" => [
"query" => $q,
"boost" => 1
]
]
],
[
"wildcard" => [
"_all" => [
"wildcard" => '*' . $q . '*',
"boost" => 0.5
]
]
]
]
]
]
]
],
'highlight' => [
'pre_tags' => ['<mark>'],
'post_tags' => ['</mark>'],
'fields' => [
'*' => [
'require_field_match' => false
]
]
]
]
];