#elasticsearch
#elasticsearch
Вопрос:
Я хочу сделать необязательный выбор для FILTER
, поэтому, если я введу определенный термин, результат будет фильтроваться по нему, в противном случае соответствовать всему.
Вот мой пробный код :
"filter" : {
"bool" : {
"should" : [
{ "terms" : { "item.brand" : [ "{{brand}}"] }} ,
{"match_all":{}}
]
}
Однако, когда я запускаю:
{
"id": "bipbip002",
"params": {
"query_all": "Table"
"brand":""
}
}
Я получил это:
{
"error": {
"root_cause": [
{
"type": "parsing_exception",
"reason": "Unknown key for a START_OBJECT in [filter].",
"line": 1,
"col": 302
}
],
"type": "parsing_exception",
"reason": "Unknown key for a START_OBJECT in [filter].",
"line": 1,
"col": 302
},
"status": 400
}
В настоящее время работает над версией 7el
ИНФОРМАЦИЯ О СОПОСТАВЛЕНИИ
"item": {
"properties": {
"brand": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
"name": {
"properties": {
"en": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
Логика, лежащая в основе:
Имя элемента поиска, если пользователи нажимают на кнопку фильтра, отправляет API в существующий шаблон, аргумент фильтра которого является необязательным
Комментарии:
1. можете ли вы предоставить свое сопоставление индексов, образец и ожидаемые результаты, чтобы мы могли предоставить вам запрос, который может решить вашу проблему
Ответ №1:
Условные запросы (он же if … else) не поддерживаются непосредственно в elasticsearch DSL, вам нужно выполнить эту условную логику на вашем сервере приложений, который запускает запросы ES.
Пожалуйста, обратитесь к условному предложению в elasticsearch для получения дополнительной информации.
Комментарии:
1. Ссылка очень полезна, но я не понимаю, что такое
{{#line_no}}
,2. @ChauLoi, в официальном примере они взяли
line_no
поля типа int, и в этом поле, которое они создаютrange_query
, этоline_no
не что иное, как поле в индексе примера3. @ChauLoi пожалуйста, пройдите немного вверх по той же ссылке, и вы получите полный контекст
4. просто добавьте сопоставление, надеюсь, вы сможете привести пример для меня
5. @ChauLoi как упоминалось в документах, он не поддерживает формат JSON:(, и я не знаком со строковым синтаксисом, я могу попробовать, но это займет много моего времени, надеюсь, что кто-нибудь еще из сообщества сможет предоставить точный ответ, который вы ищете