asticsearch поиск по нескольким ключевым словам по нескольким полям - PullRequest
0 голосов
/ 19 февраля 2019

Я использую Elasticsearch5.5.3 и хочу искать несколько ключевых слов по нескольким полям, я использую сторонний анализатор, который asticsearch-analysis-ik

Я создаю индекс с именемxiaomei и создайте в нем тип с именем job.

структура отображения выглядит следующим образом:

job_mapping = {
    'properties': {
        'id': {'type': 'integer', 'store': 'yes', 'index': False},
        'job_id': {'type': 'integer', 'store': 'yes', 'index': False},
        'title': {'type': 'text', 'store': 'yes', 'analyzer': 'ik_max_word'},
        'title_alias': {'type': 'text', 'store': 'yes', 'analyzer': 'ik_max_word'},
        'base_treatment_min': {'type': 'integer', 'store': 'yes', 'index': False},
        'base_treatment_max': {'type': 'integer', 'store': 'yes', 'index': False},
        'industry_title': {'type': 'text', 'store': 'yes', 'analyzer': 'ik_max_word'},
        'c_title': {'type': 'text', 'store': 'yes', 'analyzer': 'ik_max_word'},
        'm_name': {'type': 'text', 'store': 'yes', 'analyzer': 'ik_max_word'},
        'm_full_name': {'type': 'text', 'store': 'yes', 'analyzer': 'ik_max_word'},
        'c_title': {'type': 'text', 'store': 'yes', 'analyzer': 'ik_max_word'},
        'm_province_id': {'type': 'integer', 'store': 'yes', 'index': False},
        'm_city_id': {'type': 'integer', 'store': 'yes', 'index': False},
        'm_area_id': {'type': 'integer', 'store': 'yes', 'index': False},
        'm_tel': {'type': 'keyword', 'store': 'yes', 'index': False},
        'm_location': {'type': 'geo_point'}
    }
}

код поиска выглядит следующим образом:

query_body ={
    'query': {
        'multi_match': {
            'query': '屈臣氏 张江',
            'type': 'cross_fields',
            'fields': ['title', 'title_alias', 'industry_title', 'c_title', 'm_name', 'm_full_name'],
            'operator': 'or',
            # 'analyzer':'ik_max_word'
        }
    }
}
result = es.search(index='xiaomei', doc_type='job', body=query_body, size=100)

но возвращаемый результат кажется неверным, результатЯ думаю, что это не должно возвращать это:

                   {'_id': 'AWkFIVMR-PH8ARDDPsHR',
                    '_index': 'xiaomei',
                    '_score': 4.7283645,
                    '_source': {'base_treatment_max': '3000',
                                'base_treatment_min': '2000',
                                'c_title': '金逸影城',
                                'id': 10441103,
                                'industry_title': '休闲娱乐',
                                'job_id': 10441103,
                                'm_area_id': '15405',
                                'm_city_id': 10174,
                                'm_full_name': '金逸珠江吴川国际影城',
                                'm_location': '0, 0',
                                'm_name': '金逸珠江吴川国际影城',
                                'm_province_id': 10013,
                                'm_tel': '0759-5933688',
                                'title': '服务员',
                                'title_alias': ''},
                    '_type': 'job'},
                   {'_id': 'AWkFIVIJ-PH8ARDDPsFU',
                    '_index': 'xiaomei',
                    '_score': 3.3853545,
                    '_source': {'base_treatment_max': '3000',
                                'base_treatment_min': '2000',
                                'c_title': '金逸影城',
                                'id': 10441103,
                                'industry_title': '休闲娱乐',
                                'job_id': 10441103,
                                'm_area_id': 0,
                                'm_city_id': 10162,
                                'm_full_name': '金逸影城(晋江宝龙城市广场店)',
                                'm_location': '24.80092, 118.56503',
                                'm_name': '晋江宝龙城市广场店',
                                'm_province_id': 10012,
                                'm_tel': '0595-82960055',
                                'title': '服务员',
                                'title_alias': ''},
                    '_type': 'job'},

действительно я хочу сделать поиск по ключевому слову 屈臣氏 в полях title, title_alias, industry_title, c_title, m_name, m_full_name и найдите ключевое слово 张江 в тех же полях, а затем получите все результаты.

Сначала я хочу узнать, подходит ли мой поисковый код для моих нужд.если это правильно, почему он возвращает документ, который не содержит ключевое слово 张江.если это не так, как мне сделать поиск?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...