【发布时间】:2018-03-15 01:00:15
【问题描述】:
如何使用 elasticsearch 搜索多个字段?我尝试了很多查询,但没有一个成功。我希望搜索不区分大小写,并且一个字段比另一个字段更重要。我的查询如下所示:
const eQuery = {
query: {
query_string: {
query: `*SOME_CONTENT_HERE*`,
fields: ['title^3', 'description'],
default_operator: 'OR',
},
},
}
esClient.search(
{
index: 'movies',
body: eQuery,
},
function(error, response) {
},
)
映射如下所示:
{
mappings: {
my_index_type: {
dynamic_templates: [{ string: { mapping: { type: 'keyword' }, match_mapping_type: 'string' } }],
properties: {
created_at: { type: 'long' },
description: { type: 'keyword' },
title: { type: 'keyword' },
url: { type: 'keyword' },
},
},
_default_: {
dynamic_templates: [{ string: { mapping: { type: 'keyword' }, match_mapping_type: 'string' } }],
},
},
}
【问题讨论】:
-
你也应该写下你得到的错误
-
我没有收到任何错误。只是一个空洞的回应 - 不幸的是。
-
哦,在这种情况下,您应该发布您的映射和失败的确切查询。此外,如果您显示您希望返回的 ES 索引中的文档,那就太好了。
-
所以我发现问题在于查询区分大小写。我不知道如何使它不区分大小写
-
索引的映射应该指出问题所在。如果在两个字段上都使用标准分析器,应该没问题,因为它会将索引值和传入查询都小写
标签: node.js elasticsearch query-string