Ограничить результаты поиска совпадениями нескольких полей в ElasticSearch - PullRequest
0 голосов
/ 01 апреля 2019

Я пытаюсь ограничить результат поиска несколькими словами для поиска в разных полях документа.

Например, у меня есть 3 поля field1, field2 и field3 и два поисковых слова word1 и word2. Я хотел бы, чтобы все документы с любыми двумя полями, соответствующими этим словам, отдельно, например ::10000

  • field1 соответствует word1 и field3 соответствует word2 или
  • field2 соответствует word1 и field3 соответствует word2 или
  • field1 совпадения word2 и field2 совпадения word1 или
  • ... ...

Как мне написать запрос?

Btw. Я использую ElasticSearch 5.x.

Ответы [ 2 ]

1 голос
/ 01 апреля 2019

Я думаю, что это должно работать:

{
    "query": {
        "bool": {
            "must": [{
                    "multi_match": {
                        "query": "word1",
                        "fields": ["field1", "field2", "field3"]
                    }
                },
                {
                    "multi_match": {
                        "query": "word2",
                        "fields": ["field1", "field2", "field3"]
                    }
                }
            ]
        }
    }
}
0 голосов
/ 01 апреля 2019

Пожалуйста, прочитайте документацию: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html

{
    "query": {
        "bool": {
            "should": [
                {
                    "bool": {
                        "must": [
                            {"term": {"field1 ": "word1"}},
                            {"term": {"field3 ": "word2"}}
                        ]
                    }
                },
                {
                    "bool": {
                        "must": [
                            {"term": {"field2 ": "word1"}},
                            {"term": {"field3 ": "word2"}}
                        ]
                    }
                },
                {
                    "bool": {
                        "must": [
                            {"term": {"field1 ": "word2"}},
                            {"term": {"field2 ": "word1"}}
                        ]
                    }
                }
            ]
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...