эластичный поиск и как я могу найти точный элемент массива - PullRequest
0 голосов
/ 29 октября 2019

например, я получил три элемента, например:

{"arr":["a", "b", "c"]},  
{"arr":["a", "b"]},  
{"arr":["a",  "c"]}

мой поиск таков:

"query":{
    "bool":{
        "must":[  
            {
                "term":{
                    "arr":{
                        "value":"a"
                    }
                }
            },
            {
                "term":{
                    "arr":{
                        "value":"b"
                    }
                }
            }
        ],
        "minimum_should_match": 2
    }
},

Я просто хочу получить ['a', 'b'], нотакже получите ['a', 'b', 'c'].
Я много гуглю, но не могу найти способ решить эту проблему.
Есть ли у Flexiblesearch такая возможность?

1 Ответ

1 голос
/ 29 октября 2019

Это должно работать, но может иметь низкую производительность, если вы ищете более сложные данные.

{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "arr": {
              "value": "a"
            }
          }
        },
        {
          "term": {
            "arr": {
              "value": "b"
            }
          }
        },
        {
          "script": {
            "script": "doc['arr'].length == 2"
          }
        }
      ]
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...