Я использую динамическое отображение c вasticsearch для загрузки моего файла json вasticsearch, например:
es = Elasticsearch([{'host': 'localhost', 'port': 9200}])
def extract():
f = open('tmdb.json')
if f:
return json.loads(f.read())
movieDict = extract()
def index(movieDict={}):
for id, body in movieDict.items():
es.index(index='tmdb', id=id, doc_type='movie', body=body)
index(movieDict)
Как я могу обновить отображение для одного поля? У меня есть поле title
, к которому я хочу добавить другой анализатор.
title_settings = {"properties" : { "title": {"type" : "text", "analyzer": "english"}}}
es.indices.put_mapping(index='tmdb', body=title_settings)
Это не удалось.
Я знаю, что не могу обновить уже существующий индекс, но как правильно переиндексировать сопоставление, сгенерированное из файла json? В моем файле много полей, создание карт / настроек вручную было бы очень проблематично.
Я могу указать анализатор для запроса, например так:
query = {"query": {
"multi_match": {
"query": userSearch, "analyzer":"english", "fields": ['title^10', 'overview']}}}
Как мне указать это для индекса или поля?
Я также могу установить анализатор в настройки после закрытия и открытия индекса
analysis = {'settings': {'analysis': {'analyzer': 'english'}}}
es.indices.close(index='tmdb')
es.indices.put_settings(index='tmdb', body=analysis)
es.indices.open(index='tmdb')
Копирование точных настроек для анализаторов engli sh не помогает 'активировать 'это для моих данных.
https://www.elastic.co/guide/en/elasticsearch/reference/7.6/analysis-lang-analyzer.html#english -анализатор
Под словом "активировать" я имею в виду, что поиск не возвращается в форме, обработанной анализатором engli sh ie. Есть еще стоп-слова.