我正在尝试通过一个简单的示例应用程序学习Elasticsearch,该应用程序列出了与人相关的报价。映射示例如下所示:
{
"people" : {
"properties" : {
"name" : { "type" : "string"},
"quotations" : { "type" : "string" }
}
}
}
一些示例数据可能看起来像:
{ "name" : "Mr A",
"quotations" : [ "quotation one, this and that and these"
, "quotation two, those and that"]
}
{ "name" : "Mr B",
"quotations" : [ "quotation three, this and that"
, "quotation four, those and these"]
}
我希望能够对单个引用使用querystring api,并返回匹配的人。例如,我可能想查找报价包含(此与这些)的人-应该返回“ A先生”而不是“
B先生”,依此类推。我该如何实现?
编辑1:
安德烈(Andrei)在下面的回答似乎可行,数据值现在看起来像:
{"name":"Mr A","quotations":[{"value" : "quotation one, this and that and these"}, {"value" : "quotation two, those and that"}]}
但是,我似乎无法使query_string查询正常工作。以下没有结果:
{
"query": {
"nested": {
"path": "quotations",
"query": {
"query_string": {
"default_field": "quotations",
"query": "quotations.value:this AND these"
}
}
}
}
}
有没有办法让query_string查询与嵌套对象一起工作?
Edit2:是的,请参阅Andrei的答案。
为了达到该要求,您需要查看嵌套对象,而不是查询平整的值列表,而是查询该嵌套对象中的各个值。例如:
{
"mappings": {
"people": {
"properties": {
"name": {
"type": "string"
},
"quotations": {
"type": "nested",
"properties": {
"value": {
"type": "string"
}
}
}
}
}
}
}
值:
{"name":"Mr A","quotations":[{"value": "quotation one, this and that and these"}, {"value": "quotation two, those and that"}]}
{"name":"Mr B","quotations":[{"value": "quotation three, this and that"}, {"value": "quotation four, those and these"}]}
查询:
{
"query": {
"nested": {
"path": "quotations",
"query": {
"bool": {
"must": [
{ "match": {"quotations.value": "this"}},
{ "match": {"quotations.value": "these"}}
]
}
}
}
}
}
本文向大家介绍MySQL查询以字符串字段中的数字字符对行进行分组?,包括了MySQL查询以字符串字段中的数字字符对行进行分组?的使用技巧和注意事项,需要的朋友参考一下 为此,您可以在+运算符的帮助下将0与字符串字段连接起来。这里的场景就像我们需要从字符串字段“ 9844Bob ”中获取数字“ 9844 ”。 让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所
问题内容: 我有一个非常基本的“用户”索引,其中一个类型为“用户”,其中有多个字段。除此之外,我在索引上没有任何定义。 我需要做的是提供自动完成的结果,该结果优先考虑前缀匹配(用于用户名),但还包含来自用户bio和网站的其他匹配以及其他字段的子字符串匹配。 如何使用查询DSL完成此操作? 问题答案: 有多种方法可以实现您想要的。我会说这取决于您要进行前缀匹配的方式。您可以使用“ 前缀查询”,也可以
问题内容: 我在C#中使用elasticsearch.net库,并尝试查询与指定过滤器匹配的对象。 我希望查询返回对象,其中对象的Names集合中至少存在来自过滤器的输入名称之一。 问题是此查询的结果总是使我命中0次,即使我确定数据库中确实存在与指定过滤器匹配的数据,我也想找出我的查询出了什么问题… 该模型: 过滤对象: 查询数据的方法: 我也尝试过以下查询,但都没有产生预期的结果: 适用于我的解
我正在做一个简单的查询\u字符串查询,如下所示: 然而,搜索将文档与不一定相邻的单词“南部”和“西部”进行匹配,例如“我们在英格兰南部和西部看到低飞的秃鹰”。我希望它只返回与确切短语匹配的结果,例如“我们在白金汉郡西南部看到低飞的秃鹰”。 用于搜索和索引的分析器是雪球分析器,我猜这可能是问题的根源,即短语查询不适用于雪球分析器吗? 有什么想法吗? 蒂亚 多米尼克
问题内容: 如何在上面的数组中松散搜索“ Last”一词? 上面的代码仅在指针与值中的所有内容完全匹配时才回显值的键,这是我不想要的。我想要这样的东西: 如果值包含单词“ Last”,我希望值的键回显。 问题答案: 要查找符合搜索条件的值,可以使用函数: 现在,数组将仅包含原始数组中包含单词 last (不区分大小写)的元素。 如果需要查找与条件匹配的值的键,则需要遍历数组: 现在,数组包含原始数
问题内容: Elasticsearch版本:7.1.1 嗨,我做了很多尝试,但是在索引中找不到任何解决方案,我有一个包含字符串的字段。 因此,例如,我有两个文档,它们在locations数组中包含不同的值。 文件1: 文件2: 用户请求搜索术语 克洛彭堡, 而我只想返回那些包含术语 克洛彭堡 而不是 Landkreis Cloppenburg的 文档。结果应仅包含 Document-1 。但是我的