# Вопрос по html\_strip

**URL:** <https://discuss.elastic.co/t/html-strip/57672>\
**Category:** Вопросы на русском языке\
**Created:** [August 10, 2016, 9:04am UTC](https://discuss.elastic.co/t/html-strip/57672 "2016-08-10T09:04:49Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![whispersofdew](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/whispersofdew/32/11067_2.png) [@whispersofdew](https://discuss.elastic.co/u/whispersofdew)\
**Post date:** [August 10, 2016, 9:04am UTC](https://discuss.elastic.co/t/html-strip/57672/1 "2016-08-10T09:04:49Z")

</div>

Всем привет!  
Вопрос от новичка

Я все продолжаю играться с тестовой базой и потом переношу что получилось на свою

> <https://github.com/imotov/elasticsearch-analysis-morphology/blob/master/demo.sh>

Вопрос такой:

Я добавил "char\_filter": "html\_strip", в analysis, но текст в "properties" : {  
"body" : { "type" : "string", "analyzer" : "russian\_morphology" }, продолжает укладываться с тегами.  
Я где-то запутался в синтаксисе?

```
#!/bin/sh
curl -XDELETE 'http://192.168.200.43:9200/rustest' && echo
curl -XPUT 'http://192.168.200.43:9200/rustest' -d '{
    "settings": {
		"analysis": {
			"analyzer": {
				"my_analyzer": {
					"type": "custom",
          "char_filter": "html_strip",
					"tokenizer": "standard",
					"filter": ["lowercase", "russian_morphology", "english_morphology", "my_stopwords"]
				}
			},
			"filter": {
				"my_stopwords": {
					"type": "stop",
					"stopwords": "а,без,более,бы,был,была,были,было,быть,в,вам,вас,весь,во,вот,все,всего,всех,вы,где,да,даже,для,до,его,ее,если,есть,еще,же,за,здесь,и,из,или,им,их,к,как,ко,когда,кто,ли,либо,мне,может,мы,на,надо,наш,не,него,нее,нет,ни,них,но,ну,о,об,однако,он,она,они,оно,от,очень,по,под,при,с,со,так,также,такой,там,те,тем,то,того,тоже,той,только,том,ты,у,уже,хотя,чего,чей,чем,что,чтобы,чье,чья,эта,эти,это,я,a,an,and,are,as,at,be,but,by,for,if,in,into,is,it,no,not,of,on,or,such,that,the,their,then,there,these,they,this,to,was,will,with"
				}
			}
		}
	}
}' && echo
curl -XPUT 'http://192.168.200.43:9200/rustest/type1/_mapping' -d '{
	"type1": {
	    "_all" : {"analyzer" : "russian_morphology"},
    	"properties" : {
        	"body" : { "type" : "string", "analyzer" : "russian_morphology" },
          "targetId" : { "type" : "string", "analyzer" : "russian_morphology" }
    	}
	}
}'

```

Пробывал обойти это с помощью [https://www.npmjs.com/package/striptags](https://www.npmjs.com/package/striptags) , но там теги удаляются бекспейсом и слова просто склеиваются если между тегами не было пробелов, укладываясь в эластик одним словом, будет ли у меня с данным фильтром эластика такая же проблема?

Например в документе у меня  
Ford Henry  
Vladimir Petrovich

А в базу попадает Ford HenryVladimir Petrovich т.к. разметку просто удалило бэкспейсом.

---

<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:** [August 10, 2016, 3:14pm UTC](https://discuss.elastic.co/t/html-strip/57672/2 "2016-08-10T15:14:28Z")

</div>

Вы в настройках настроили `my_analyzer`, а в меппинге продолжаете использовать стандартный `russian_morphology`. Попробуйте так:

```auto
curl -XPUT 'http://192.168.200.43:9200/rustest/type1/_mapping' -d '{
    "type1": {
        "_all" : {"analyzer" : "my_analyzer"},
        "properties" : {
            "body" : { "type" : "string", "analyzer" : "my_analyzer" },
            "targetId" : { "type" : "string", "analyzer" : "my_analyzer" }
        }
    }
}'

```

---

<div class="post-metadata">

**Author:** ![whispersofdew](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/whispersofdew/32/11067_2.png) [@whispersofdew](https://discuss.elastic.co/u/whispersofdew)\
**Post date:** [August 11, 2016, 12:00pm UTC](https://discuss.elastic.co/t/html-strip/57672/3 "2016-08-11T12:00:33Z")

</div>

Я так пробывал сделать. Получается вот что:

В документе

```
Джекки Чан
Арнольд Шварценеггер
Япония

```

В базу кладется как (с лишними тегами в body)

```
  {
    "_index": "rustest",
    "_type": "type1",
    "_id": "someId_someProp",
    "_score": 1,
    "_source": {
      "body": "<p>Джекки Чан</p><p>Арнольд Шварценеггер</p><p>Япония</p>",
      "targetId": [
        "sxid3553-dca3-4f12-98ae-19d231d77c17"
      ]
    }
  },

```

Изменил вот на такой:

```
' && echo
curl -XPUT 'http://192.168.200.43:9200/rustest/type1/_mapping' -d '{
	"type1": {
	    "_all" : {"analyzer" : "my_analyzer"},
    	"properties" : {
        	"body" : { "type" : "string", "analyzer" : "my_analyzer" },
          "targetId" : { "type" : "string", "analyzer" : "my_analyzer" }
    	}
	}
}'
```

---

<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:** [August 11, 2016, 12:56pm UTC](https://discuss.elastic.co/t/html-strip/57672/4 "2016-08-11T12:56:37Z")

</div>

Анализаторы влияют только на то, как документ индексируется. В `_source` документ сохраняется в том виде, в котором вы его добавили. Я думал, вы хотите добиться того, чтобы поиск по тегам (`p` в данном случае) не возвращал вам все записи. В вашем случае HTML надо убирать до того, как документ добавляется в elasticsearch.

---

<div class="post-metadata">

**Author:** ![whispersofdew](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/whispersofdew/32/11067_2.png) [@whispersofdew](https://discuss.elastic.co/u/whispersofdew)\
**Post date:** [August 11, 2016, 2:07pm UTC](https://discuss.elastic.co/t/html-strip/57672/5 "2016-08-11T14:07:44Z")

</div>

Значит буду в ручную перенос строк на пробелы заменять и потом чистить от html [https://www.npmjs.com/package/striptags](https://www.npmjs.com/package/striptags)

Спасибо большое за ответ!

---

<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:** [July 6, 2017, 1:46pm UTC](https://discuss.elastic.co/t/html-strip/57672/6 "2017-07-06T13:46:28Z")

</div>


