这里是弹性搜索的新手,并试图更好地理解这些查询之间的差异.据我所知,term对集的一个单一期限(需小写的比赛工作吗?),都match phrase和query string文本字符串匹配.
我有对象User具有属性Name和Surname.我希望使用一个查询在这些字段中搜索,我在文档中找到了multi_match,但我不知道如何正确使用它与通配符.可能吗?
我尝试使用multi_match查询,但它不起作用:
{
"query": {
"multi_match": {
"query": "*mar*",
"fields": [
"user.name",
"user.surname"
]
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在使用elasticsearch来过滤和搜索json文件,我是这项技术的新手.所以我有点困惑如何在elasticsearch中编写类似查询.
select * from table_name where 'field_name' like 'a%'
Run Code Online (Sandbox Code Playgroud)
这是mysql查询.如何在Elasticsearch中编写此查询?我使用的是elasticsearch版本0.90.7.
php java elasticsearch elasticsearch-plugin elasticsearch-net
我正在寻找一种方法来实现具有同义词和模糊性的自动建议
例如,当用户尝试搜索“replce ar”时,我的同义词列表有 ar => audio record
因此,结果应包括匹配更改音频记录替换音频记录等的项目,
在这里我们需要模糊性,因为“替换”(在用户的搜索文本中)有一个拼写错误 匹配 ar => 音频记录自动建议与正则表达式模式的同义词。
是否可以在单个字段中实现所有三个功能?
编辑: 正则表达式+模糊只是抛出错误。我还没有很好地解释我需要一个正则表达式模式。所以,我需要一个正则表达式来进行部分单词查找(“百科全书”包含“环”)。
现在,在调查了我为此目的有哪些选择后,将我引导至NGram Tokenizer并查看其他建议者,我发现也许Phrase 建议者正是我正在寻找的,所以我会尝试并告诉你关于。
从这里开始,我向自己询问此类查询的 elasticsearch 语法:
WHERE text LIKE "%quick%"
AND text LIKE "%brown%"
AND text LIKE "%fox%"
Run Code Online (Sandbox Code Playgroud)
我的尝试(不幸的是没有成功)
"query": {
"bool": {
"filter": [
{
"bool": {
"must": [
{
"terms": {
"text": [
"*quick*",
"*brown*",
"*fox*"
]
}
}
]
}
}
]
}
}
Run Code Online (Sandbox Code Playgroud) 我必须实现超过 500,000 个名字的自动完成,这些名字以后可能会增加到超过 400 万个名字。
后端是使用 Spring 的 Java REST Web 服务调用。我应该使用 MongoDB、 Redis还是 Elasticsearch 来存储和查询/搜索名称?
我想同时执行完全匹配和部分匹配。例如,“Alize”,所以如果我输入“Ali”,它也应该返回“Alize”的结果。对于这种情况,如果我键入确切的单词“Alize”,我只能返回结果。
POST /ecommerce/_search
'{
"query": {
"multi_match": {
"fields": [
"name"
],
"operator": "AND",
"query": "Ali*"
}
},
"size": 20,
"stored_fields": [
"uid",
"_source"
]
}`
Run Code Online (Sandbox Code Playgroud) java ×2
autocomplete ×1
fuzzy-search ×1
mongodb ×1
php ×1
redis ×1
search ×1
sql ×1
sql-like ×1
wildcard ×1