SearchParseException如果发现某些文档不包含排序条件中使用的字段,则Elasticsearch会抛出一段时间解析查询.
SearchParseException:Parse Failure [找不到[price]的映射以便排序]
我怎样才能成功搜索这些文件,即使有些人遗漏了这些文件price?
我有以下ElasticSearch查询,我认为会返回电子邮件字段中的所有匹配项,它等于myemails@email.com
"query": {
"bool": {
"must": [
{
"match": {
"email": "myemail@gmail.com"
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
}
正在搜索的用户类型的映射如下:
{
"users": {
"mappings": {
"user": {
"properties": {
"email": {
"type": "string"
},
"name": {
"type": "string",
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed"
}
}
},
"nickname": {
"type": "string"
},
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
以下是从ElasticSearch返回的结果示例
[{
"_index": "users",
"_type": "user",
"_id": "54b19c417dcc4fe40d728e2c",
"_score": 0.23983537,
"_source": {
"email": "johnsmith@gmail.com",
"name": "John Smith",
"nickname": …Run Code Online (Sandbox Code Playgroud) 如何通过所有多术语搜索仅获得过滤后的匹配结果。我有这个示例表,其中 titleid 是映射 int 字段,personid 是关键字:
titleid:1,personid:a
titleid:3,personid:a
titleid:1,personid:b
titleid:2,personid:b
titleid:1,personid:c
titleid:5,personid:c
Run Code Online (Sandbox Code Playgroud)
预期结果是:
titleid:1
Run Code Online (Sandbox Code Playgroud)
使用如下示例查询:
{query:
{bool:
{filter:
{must:[
{terms : {fields: {personid:[a,b,c]}}
]
}}}}
Run Code Online (Sandbox Code Playgroud)
我有以下结果:
titleid: 1,2,3,5
Run Code Online (Sandbox Code Playgroud)
也许这会有所帮助,我在 sql 中进行了查询并得到了预期的结果。我所做的是要求查询给出与搜索参数数量匹配的 titleid 总和。这只是为了更自我解释,这个想法是使用elasticsearch。
select titleid
from (
select count(titleid) as title_count, titleid
from table1
where personid in ('a','b','c')
group by titleid
) as vw
where title_count = 3
Run Code Online (Sandbox Code Playgroud)