我有一个在elasticsearch中索引的文档:
{
"content":"Some content with @someone mention",
"mentions":["someone"],
"userId":"4dff31eaf8815f4df04e2d62"
}
我尝试通过查询找到它:
{
"query": {
"filtered": {
"filter": { "term":{"userId":"4dff31eaf8815f4df04e2d62"} },
"query": {
term: {"mentions":"someone"}
}
}
}
}
并没有收到任何结果。
同时,内容查询工作正常:
{
"query": {
"filtered": {
"filter": { "term":{"userId":"4dff31eaf8815f4df04e2d62"} },
"query": {
"term": {"content":"some"}
}
}
}
}
通过数组搜索是否需要一些特殊语法?我发现了几个话题[1 http://elasticsearch-users.115913.n3.nabble.com/Search-inside-field-with-nested-array-td2293927.html, 2 http://elasticsearch-users.115913.n3.nabble.com/Query-Syntax-for-arrays-and-nested-objects-td212582.html] 关于elasticsearch中的数组,但没有直接的答案。
UPDGet Mapping 调用返回下一个结果:
{
"records": {
"all":{
"properties":{
"content":{"type":"string"},
"userId":{"type":"string"},
"mentions":{"type":"string"}
}
}
}
}
UPD2我找到了问题的根源。我不小心在我的问题中引入了错误。我在数据库中实际拥有的用户名的形式是“some_one”(下划线很重要)。因此标准索引将其分成 2 个单词并查询失败原因的“some_one”。