ElasticSearch Python高亮显示未显示在结果中

up9lanfz  于 2022-12-17  发布在  ElasticSearch
关注(0)|答案(1)|浏览(162)

我正在尝试使用我的ElasticSearch结果显示突出显示。
我运行此查询时没有遇到任何语法错误,但也没有看到任何突出显示。您能建议我可能出错的地方吗?

search_query = {
    'query': {
        'multi_match': {
            'query': query,
            'fields': ['title', 'text']
        }
    },
    'highlight': {
        'pre_tags': ['<b>', '<em>'],
        'post_tags': ['</b>', '</em>'],
        'fields': {
            'title': {}
        }
    }
}

我的结果显示了我期望返回的所有字段,但没有显示highlight字段。
我已经尝试了类似语法的几个版本。
编辑:添加示例文档。

doc = {
    title: 'The website title',
    image: 'https://thedomain.com/images/sample_image.jpg',
    text: 'blah blah blah .. etc.'
}

检索词示例:“网站”
我在创建索引的代码中添加了一个Map。
Map为:

request_body = {
    "settings": {
        "number_of_shards": 1,
            "number_of_replicas": 1
        },
        "mappings": {
            "properties": {
                "title": {
                    "type": "text",
                    "index": 'true'
                }
            }
        }
    }

创建索引的代码为:

es = Elasticsearch([{'host': 'localhost', 'scheme': 'http', 'port': 9200}])
es.indices.create(index=index_name, body=request_body)
zxlwwiss

zxlwwiss1#

我不知道你是否有某种类型的分析器在外地,但运行下面的例子在kibana devTools我得到了一个积极的结果。

response = get_client_es().indices.create(index="idx_test", body={
    "mappings": {
        "properties": {
            "title": {
                "type": "text",
                "index": "true"
            }
        }
    }
}, ignore=400)

result = get_client_es().index(index="idx_test", body={
    "title": "The website title",
    "image": "https://thedomain.com/images/sample_image.jpg",
    "text": "blah blah blah .. etc."
}, refresh="wait_for")

print(result)

query = {
    "query": {
        "multi_match": {
            "query": "website",
            "fields": [
                "title",
                "text"
            ]
        }
    },
    "highlight": {
        "pre_tags": [
            "<b>",
            "<em>"
        ],
        "post_tags": [
            "</b>",
            "</em>"
        ],
        "fields": {
            "title": {}
        }
    }
}
result = get_client_es().search(index="idx_test", body=query)
print(result)

结果

{'acknowledged': True, 'shards_acknowledged': True, 'index': 'idx_test'}

{'_index': 'idx_test', '_id': 'ob5rEIUBSeG9S8LuvPKZ', '_version': 1, 'result': 'created', '_shards': {'total': 2, 'successful': 1, 'failed': 0}, '_seq_no': 0, '_primary_term': 1}

{'took': 2, 'timed_out': False, '_shards': {'total': 1, 'successful': 1, 'skipped': 0, 'failed': 0}, 'hits': {'total': {'value': 1, 'relation': 'eq'}, 'max_score': 0.2876821, 'hits': [{'_index': 'idx_test', '_id': 'ob5rEIUBSeG9S8LuvPKZ', '_score': 0.2876821, '_source': {'title': 'The website title', 'image': 'https://thedomain.com/images/sample_image.jpg', 'text': 'blah blah blah .. etc.'}, 'highlight': {'title': ['The <b>website</b> title']}}]}}

相关问题