# Поиск по словосочетанию с разным порядком слов

**URL:** <https://discuss.elastic.co/t/topic/134022>\
**Category:** Вопросы на русском языке\
**Created:** [May 31, 2018, 10:30am UTC](https://discuss.elastic.co/t/topic/134022 "2018-05-31T10:30:29Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![zru](https://avatars.discourse-cdn.com/v4/letter/z/dfb087/32.png) [@zru](https://discuss.elastic.co/u/zru)\
**Post date:** [May 31, 2018, 10:30am UTC](https://discuss.elastic.co/t/topic/134022/1 "2018-05-31T10:30:30Z")

</div>

Можно ли средствами Elasticsearch 1.7 составить запрос, в котором будет поиск по словосочетанию по нескольким полям, чтобы пользователь ввел словосочетание ""красный цвет"", а нашлось и ""красный цвет"" и ""цвет красный"". Интересует именно реализация на стороне эластика через какой-нибудь параметр или флаг.  
Текущий запрос находит только ""красный цвет"":

> ```
> {
> "size": 10,
> "query": {
> "query_string": {
> "default_operator": "AND",
> "fields": [
> "name",
> "description"
> ],
> "query": "\"красный цвет\""
> }
> }
> }
> 
> ```

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [May 31, 2018, 2:02pm UTC](https://discuss.elastic.co/t/topic/134022/2 "2018-05-31T14:02:18Z")

</div>

Я бы не стал использовать ElasticSearch 1.7. Эта версия морально устарела, больше не поддерживается, и просто небезопасна.

Посмотрите на параметр `phrase_slop` если его увеличить до 2, то он должен и `красный цвет` и `цвет красный`. Но побочный эффект этого параметра, то что он будет находит еще и фразы типа `красный или оранжевый цвет`.

Если нужно больше контроля, то посмотрите запрос [span near](https://www.elastic.co/guide/en/elasticsearch/reference/1.7/query-dsl-span-near-query.html). В нем можно указывать нужно ли учитывать порядок слов во фразе.

---

<div class="post-metadata">

**Author:** ![zru](https://avatars.discourse-cdn.com/v4/letter/z/dfb087/32.png) [@zru](https://discuss.elastic.co/u/zru)\
**Post date:** [May 31, 2018, 3:42pm UTC](https://discuss.elastic.co/t/topic/134022/3 "2018-05-31T15:42:23Z")

</div>

Спасибо за совет по переходу на новую версию!  
Да, версия устарела. Пробовали переход на 5 версию - [получили ошибки при сортировке nested-агрегаций](https://github.com/elastic/elasticsearch/issues/16838).  
Уже думал что про баг забыли. Но после Вашего сообщения был найден [PR, который фиксит ошибку](https://github.com/elastic/elasticsearch/pull/26683), ура!  
По сабжу, решения в 1.7 и правда не совершенны. В 6+ версии уже наверное есть что-то получше для решения моего вопроса?

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [May 31, 2018, 5:01pm UTC](https://discuss.elastic.co/t/topic/134022/4 "2018-05-31T17:01:08Z")

</div>

> [@zru](#):
>
> В 6+ версии уже наверное есть что-то получше для решения моего вопроса?

На сколько я знаю - нет.

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [June 1, 2018, 3:02pm UTC](https://discuss.elastic.co/t/topic/134022/5 "2018-06-01T15:02:43Z")

</div>

Но, возможно, новое решение появится в 7.0.0 - [https://github.com/elastic/elasticsearch/issues/29636](https://github.com/elastic/elasticsearch/issues/29636)

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [June 29, 2018, 3:02pm UTC](https://discuss.elastic.co/t/topic/134022/6 "2018-06-29T15:02:46Z")

</div>

Closed on June 29, 2018, 3:02pm UTC

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
