⑴ ElasticSearch有类似mysql的distinct的语法吗
SELECT 指令让我们能够读取表格中一个或数个栏位的所有资料。 这将把所有的资料都抓出,无论资料值有无重复。在资料处理中,我们会经常碰到需要找出表格内的不同 资料值的情况。换句话说,我们需要知道这个表格/栏位内有哪些不同的值,而每个值出现的次数并不重要。这要如何达成呢?在 SQL 中,这是很容易做到的。我们只要在 SELECT 后加上一个 DISTINCT 就可以了。DISTINCT 的语法如下:
SELECT DISTINCT "栏位名"
FROM "表格名"
举例来说,若要在以下的表格,Store_Information,找出所有不同的店名时,
Store_Information表格
store_name Sales Date
Los Angeles $1500 Jan-05-1999
San Diego $250 Jan-07-1999
Los Angeles $300 Jan-08-1999
Boston $700 Jan-08-1999
我们就打入,
SELECT DISTINCT store_name FROM Store_Information
结果:
store_name
Los Angeles
San Diego
Boston
⑵ elasticsearch 怎么实现模糊匹配
QueryDSL如下:
{
"query": {
"bool": {
"must": [
{
"term": {
"category_id": "7"
}
},
{
"term": {
"enable": 1
}
},
{
"term": {
"status": 2
}
},
{
"range": {
"stock": {
"gt": 0
}
}
},
{
"match": {
"search_field": {
⑶ ElasticSearch中Filter和Query的异同
query与filter
1、区别如下:
query是要相关性评分的,filter不要;
query结果无法缓存,filter可以。
所以,选择参考:
1、全文搜索、评分排序,使用query;
2、是非过滤,精确匹配,使用filter。
⑷ 为什么elasticsearch和hbase的jar包冲突过滤不掉
其实就是将org.joda等4个可能有冲突的jar包通过maven-shade-plugin插件迁移后重新打个jar包从而使得在引入这个jar包时能够使用该jar包自己的依赖而不是使用外部依赖。
这里笨小葱一开始犯了个严重的错误,我一直以为只有guava这一个包冲突了,所以一开始并没有做com.google.common的jar包迁移。所以在使用hbase时出现了如下错误:
Java.lang.IllegalAccessError: tried to access method com.google.common.base........
后来引入com.google.common后才解决问题。
pom文件配置完成后运行:
mvn clean install
然后看到build success的话表示打包成功,新的依赖包会在.m2文件的仓库中。
下面回到原来的集成项目的pom文件中。引入该jar包: (注意这里需要排除掉es2.2.0的jar包,不然maven会将2.2.0的jar包打进去,造成冲突)
<dependency>
<groupId>my.elasticsearch</groupId>
<artifactId>es-shaded</artifactId>
<version>1.0-SNAPSHOT</version>
<exclusions>
<exclusion>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
</exclusion>
</exclusions>
</dependency>
好啦,到这里测试一下会发现,冲突问题解决啦。
⑸ elasticsearch的filter疑问
离家已二年。
⑹ ElasticSearch有类似mysql的distinct的语法吗
SELECT 指令让我们能够读取表格中一个或数个栏位的所有资料。 这将把所有的资料都抓出,无论资料值有无重复。在资料处理中,我们会经常碰到需要找出表格内的不同 资料值的情况。换句话说,我们需要知道这个表格/栏位内有哪些不同的值,而每个值出现的次数并不重要。这要如何达成呢?在 SQL 中,这是很容易做到的。我们只要在 SELECT 后加上一个 DISTINCT 就可以了。DISTINCT 的语法如下: SELECT DISTINCT "栏位名" FROM "表格名" 举例来说,若要在以下的表格,Store_Information,找出所有不同的店名时, Store_Information表格 store_name Sales Date Los Angeles $1500 Jan-05-1999 San Diego $250 Jan-07-1999 Los Angeles $300 Jan-08-1999 Boston $700 Jan-08-1999 我们就打入, SELECT DISTINCT store_name FROM Store_Information 结果: store_name Los Angeles San Diego Boston
⑺ 请教elasticsearch自定义结果集过滤如何支持
用groovy脚本自定义ElasticSearch查询,来实现以上功能。 例,数据中包含字段birdtyday,记录游客生日: "birthday": "1992-02-05 00:00:00", 新建文件getAgeByBirthday.groovy,编辑其内容为: def b = doc[birthday_field].value def birthday = new Date(b) def now = new Date() long age = (now -birthday)/365 age 并把此文件放在es的config/scripts目录下(如果没有此目录就新建一个)。 然后在config/elasticsearch.yml文件中加一行: script.groovy.sandbox.enabled: true 最后重启es即可。 接下来,我们就可以用以下DSL进行年龄统计了 GET /lovingtrip-report/hotelcustomer/_search?search_type=count { "aggs": { "counts_by_age": { "terms": { "script_file": "getAgeByBirthday", "params": { "birthday_field": "birthday" }, "size": 100 } } } } 或者: GET /lovingtrip-report/hotelcustomer/_search?search_type=count { "aggs": { "histogram_by_age": { "histogram": { "script_file": "getAgeByBirdthday", "params": { "birdthday_field": "birdthday" }, "interval": 5 } } } } 不过脚本查询性能不佳,且不能利用es的缓存,所以在大数据量或高性能要求的场景下不适用。。 ------------------------------------- 补充一个自定义的年龄range过滤: range_AgeByBirthday.groovy: def b = doc[birdthday_field].value def birdthday = new Date(b) def now = new Date() long age = (now -birdthday)/365 gte<=age && age<=lte DSL: GET /lovingtrip-report/hotelcustomer/_search?search_type=count { "query": { "filtered": { "filter": { "script": { "script_file": "range_AgeByBirdthday", "params": { "birdthday_field": "birdthday", "gte": 50, "lte": 60 } } } } }, "aggs": { "histogram_by_age": { "histogram": { "script_file": "getAgeByBirdthday", "params": { "birdthday_field": "birdthday" }, "interval": 5 } } } }
⑻ elasticsearch怎样将重复的索引去除
Elasticsearch是一个高伸缩、高可用、基于Apache Lucene的开源搜索与分析引擎。通过它你可以很方便地对数据进行深入挖掘,可以随时放大与缩小搜索与分析的区间,并且这一切都是实时的。为了提供了一个优秀的用户体验,我们对Elasticsearch投入了...
⑼ ElasticSearch有类似mysql的distinct的语法吗
在 SQL 中,这是很容易做到的。我们只要在 SELECT 后加上一个 DISTINCT 就可以了。DISTINCT 的语法如下:
SELECT DISTINCT "栏位名"
FROM "表格名"
举例来说,若要在以下的表格,Store_Information,找出所有不同的店名时,
Store_Information表格
store_name Sales Date
Los Angeles $1500 Jan-05-1999
San Diego $250 Jan-07-1999
Los Angeles $300 Jan-08-1999
Boston $700 Jan-08-1999
我们就打入,
SELECT DISTINCT store_name FROM Store_Information
结果:
store_name
Los Angeles
San Diego
Boston